2012-08-03 49 views
11
{% include "example.html" with name="John" hide_last_name=True %} 

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

回答

11

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

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

怀疑,但无法确定。感谢您的确认。 – tamakisquare 2012-08-04 08:34:47

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

你可以用真和假的模板,所以这不再是一个问题

2

在Django 1.5中,您可以按照其release notes在django模板中使用True。

如果你正在使用早期版本,你将不得不去推荐@okm!

相关问题