如何在Django模板中检查TEMPLATE_DEBUG标志?
你知道在Django模板中是否可以判断TEMPLATE_DEBUG这个标志是否被设置吗?
我想在我的Django应用在开发机器上运行时,禁用我的谷歌分析脚本。类似于{% if debug %}这样的模板标签就太完美了。不过,我在文档中没有找到类似的东西。
当然,我可以把这个标志添加到上下文中,但我想知道有没有更好的方法来做到这一点。
6 个回答
30
Django 1.9+
在settings.py文件中:
INTERNAL_IPS = (
'127.0.0.1',
)
模板设置:
{% if debug %}
https://docs.djangoproject.com/en/dev/ref/settings/#internal-ips 上说:
这是一个包含IP地址的列表,格式是字符串,这些IP地址可以:
- 让debug()这个上下文处理器向模板中添加一些变量。
debug
这个上下文处理器是默认在settings.py
文件里的。
59
如果修改 INTERNAL_IPS
这个设置不太合适或者不可能的话,你可以使用一个上下文处理器来解决这个问题:
在 myapp/context_processors.py
文件里:
from django.conf import settings
def debug(context):
return {'DEBUG': settings.DEBUG}
在 settings.py
文件里:
TEMPLATE_CONTEXT_PROCESSORS = (
...
'myapp.context_processors.debug',
)
然后在我的模板中,只需要这样做:
{% if DEBUG %} .header { background:#f00; } {% endif %}