如何传递布尔关键字参数以及模板标签的使用"Include"


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

基本上,我正在尝试将"example.html"作为子模板包含在我的主模板中。提供了将关键字参数传递namehide_last_name的平均值的其他上下文。虽然 django 模板系统识别name没有问题,但它不知何故无法识别hide_last_name。我怀疑现在允许在标签中使用布尔关键字参数Include但我在官方文档中找不到任何地方提到这一点。请帮忙。谢谢。

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

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

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

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

在 django 1.5 中,你可以根据他们的发行说明在 django 模板中使用 True。

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

最新更新