1

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

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

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

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

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

...但不幸的是,它似乎不起作用。

还尝试输出该值,这将按我的预期显示:

{% show_something %}

知道是否可以使用模板标签来满足我的需要,或者是否有更好的方法?

4

1 回答 1

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
    }

设置.py

SOME_SETTING = False

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

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

于 2013-04-29T17:30:44.887 回答