在settings.py
中定义了一个布尔变量,我想在模板中显示,以便我可以控制是否显示模板的一部分。
我想过创建一个模板标签来将值公开给模板:
@register.simple_tag
def show_something():
return settings.SHOW_SOMETHING
...我会在模板中使用这样的:
{% if show_something %}
Show it
{% endif %}
......但不幸的是它似乎没有用。
还尝试输出该值,并按预期显示:
{% show_something %}
是否可以根据我的需要使用模板标签,或者是否有更好的方法?
答案 0 :(得分:2)
我认为模板上下文处理器可能更适合这种情况。在项目中放置context_processors.py
文件
from django.conf import settings
def some_setting(request):
# Or some other logic here instead of always returning it
return {
'some_setting': settings.SOME_SETTING
}
SOME_SETTING = False
TEMPLATE_CONTEXT_PROCESSORS = (
...,
'path.to.context_processors.some_setting'
)
在您的模板中,您现在可以使用{{ some_setting }}
访问该变量,或者在if
语句中使用{% if some_setting %}Show this{% endif %}