这可能是一个非常简单的问题;但我似乎无法找到正确的'方法
我有一个模板,其中我包含了三次不同的模板。我传递了很多变量和include。问题是其中一个是可选的。
{% with
title="Add object"
type="function"
function_type="FUNCTION"
inputs=function_create_form
project_id=project.id
parent_function_id=root_function.id
{% if root_function.type == 'OBJECT' %}
parent_function_id=root_function.id
{% endif %}
%}
{% include "./popup-form.html" %}
{% endwith %}
(我知道这应该是模板中的一行,出于某种原因。但这更具可读性。)
它的要点是我只想传递if
语句中的变量,如果它是正确的类型。它总是有一个值,但并不总是正确的值。可悲的是,Django似乎并不容忍with
中的陈述。
为了澄清,如果变量的类型正确,则只应将变量传递给模板。包含的模板是用于添加对象的弹出窗体。这些对象有不同的类型;房间,对象和功能。这些对象又可以有一个父对象,这正是我想要传递的对象。但是,如果用户正在查看正确的对象类型,则只应将此父级传递给弹出窗体。这由if语句
决定我也尝试过这样做,结果相同:
{% include "./popup-form.html" with
title="Add object"
type="function"
function_type="OBJECT"
inputs=function_create_form
project_id=project.id
{% if root_function.type == 'OBJECT' %}
parent_function_id=root_function.id
{% endif %}
%}
错误:'with' received an invalid token: '{%'
我或许可以在if
之外创建一个with
语句,并将变量的值设置为空字符串。但是应该有更好的方法,对吗?在view
中执行此操作不是一种选择,因为变量始终需要具有值。
答案 0 :(得分:1)
这句话的复杂性应该是一个线索,这是错误的方法。
如果要将多个变量传递给包含的模板,您可能应该查看Reactive Forms - mark fields as touched。然后,您可以使用位置和关键字参数的任意组合来呈现模板。