根据django-developers列表上的this thread,我无法将常量False
作为参数传递给Django模板标签,因为它将被视为变量名,而不是内置常量。
但是,如果我想创建一个需要使用true/false参数的模板标记,那么(在Python中)创建和调用(在模板中)该模板标记的推荐方法是什么?
我可以简单地在模板中传递1或0,这样就可以正常工作,但是鉴于Django模板编写不要求模板编写者具有计算机编程知识(例如1 == True,0 == False),我想知道是否有是处理这种情况的更合适的方法。
标签定义和用法示例:
@register.simple_tag
def some_tag(some_string, some_boolean = True):
if some_boolean:
return some_html()
else
return some_other_html()
<!-- Error! False treated as variable name in Request Context -->
{% some_tag "foobar" False %}
<!-- Works OK, but is there a better option? -->
{% some_tag "foobar" 0 %}
最佳答案
我前不久遇到这个问题,得出的结论是使用1和0是最简单的解决方案。
但是,可能的想法是添加一个上下文处理器,该处理器使用各自的名称将True
和False
添加到模板上下文中:
# projectname/appname/context_processors.py
def booleans():
return {
'True': True,
'False': False,
}
然后显然您需要在Django设置文件中添加该上下文处理器:
TEMPLATE_CONTEXT_PROCESSORS += {
'projectname.appname.context_processors.booleans',
}
关于python - 接受 bool 参数的Django自定义模板标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4557114/