如何传递布尔关键字参数以及使用“包含”模板标记

时间:2012-08-03 22:52:44

标签: django django-templates

{% include "example.html" with name="John" hide_last_name=True %}

基本上,我试图在我的主模板中包含“example.html”作为子模板。附加上下文提供了传递关键字参数namehide_last_name的含义。虽然django模板系统无法识别name,但它无法识别hide_last_name。我怀疑现在允许在Include标签中使用boolean keyword参数,但后来我在官方文档中找不到任何地方。请帮忙。感谢。

3 个答案:

答案 0 :(得分:11)

Django模板会将True视为变量,并尝试在上下文中找到它 您可以使用非空字符串来表示真值,也可以将真值分配给上下文中的True,例如通过TEMPLATE_CONTEXT_PROCESSORS

def common_vars(request):
    return {
        'True': True,
        'False': False,
        'newline': '\n',
        ...
    }

答案 1 :(得分:8)

对于Django< = 1.4.x

如前所述,Django试图找到一个名为“True”的变量。 处理此问题的最简单方法是使用一个不会被计算的整数值。

您可以在包装器模板中书写

{% include "example.html" with show_last_name=1 %}

并在随附的模板中

John
{% if show_last_name %}
    Doe
{% endif %}

对于Django> = 1.5

您可以在模板中使用True和False,因此这不再是问题

答案 2 :(得分:2)

在django 1.5中,您可以根据release notes在django模板中使用True。

如果您正在使用早期版本,则必须使用@okm建议的内容!