gpt4 book ai didi

python - 接受 bool 参数的 Django 自定义模板标签

转载 作者:太空狗 更新时间:2023-10-29 20:11:44 24 4
gpt4 key购买 nike

根据 this thread在 django-developers 列表中,我无法将常量 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 是最简单的解决方案。

然而,一个想法可能是添加一个上下文处理器,它使用各自的名称将 TrueFalse 添加到模板上下文:

# 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com