测试模板标记的返回值

时间:2013-04-29 17:16:32

标签: django

settings.py中定义了一个布尔变量,我想在模板中显示,以便我可以控制是否显示模板的一部分。

我想过创建一个模板标签来将值公开给模板:

@register.simple_tag
def show_something():
    return settings.SHOW_SOMETHING

...我会在模板中使用这样的:

{% if show_something %}
    Show it
{% endif %}

......但不幸的是它似乎没有用。

还尝试输出该值,并按预期显示:

{% show_something %}

是否可以根据我的需要使用模板标签,或者是否有更好的方法?

1 个答案:

答案 0 :(得分:2)

我认为模板上下文处理器可能更适合这种情况。在项目中放置context_processors.py文件

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
    }

settings.py

SOME_SETTING = False

TEMPLATE_CONTEXT_PROCESSORS = (
    ...,
    'path.to.context_processors.some_setting'
)

在您的模板中,您现在可以使用{{ some_setting }}访问该变量,或者在if语句中使用{% if some_setting %}Show this{% endif %}