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

基本上,我试图在我的主模板中包含“example.html”作为子模板。附加上下文是通过传递关键字参数namehide_last_name. 虽然 django 模板系统可以毫无问题地识别name,但它就是无法识别hide_last_name。我怀疑现在允许在标签中使用布尔关键字参数,Include但是我在官方文档中找不到任何地方提到这一点。请帮忙。谢谢。

4

3 回答 3

14

对于 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,因此这不再是问题

于 2012-12-12T10:36:48.210 回答
11

更新:这个答案适用于旧版本的 Django。对于 Django >=1.5,请参见下面的答案

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

def common_vars(request):
    return {
        'True': True,
        'False': False,
        'newline': '\n',
        ...
    }
于 2012-08-04T04:20:23.260 回答
2

在 django 1.5 中,您可以根据发行说明在 django 模板中使用 True 。

如果您正在使用早期版本,则必须按照@okm 的建议进行操作!

于 2013-05-13T07:08:19.377 回答