Django DEBUG设置从不作为布尔值计算 - 仅显示调试日志

时间:2017-07-11 15:07:51

标签: python django debugging

我有一些GA代码,我们只需要在实际网站上放置。所以我正在尝试检查DEBUG的值,该值在settings.py中当前设置为True。但是,在我的模板文件settings.DEBUG中,不会评估为True或False。如果我打印出变量,它会显示调试日志。

我尝试按照本指南:How to check the TEMPLATE_DEBUG flag in a django template?添加了context_processors.py,仍然在我的模板文件中,DEBUG作为调试日志出现。

模板:

{% if DEBUG %}
<script>
    (function (i, s, o, g, r, a, m) {
        i['GoogleAnalyticsObject'] = r;
        i[r] = i[r] || function () {
                (i[r].q = i[r].q || []).push(arguments)
            }, i[r].l = 1 * new Date();
        a = s.createElement(o),
            m = s.getElementsByTagName(o)[0];
        a.async = 1;
        a.src = g;
        m.parentNode.insertBefore(a, m)
    })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');

    ga('create', 'UA-xxx', 'auto');
   // ga('send', 'pageview');
</script>
{% endif %}

settings.py:

DEBUG = True
...
TEMPLATE_CONTEXT_PROCESSORS = (
    'appname.context_processors.debug',
)

context_processors.py:

from django.conf import settings

def debug(context):
  return {'DEBUG': settings.DEBUG}

1 个答案:

答案 0 :(得分:0)

这里有几件事情。

首先,要输出变量,请使用{{ }}语法而不是{% %}。后者用于模板标签。如果执行{% debug %},则调用debug template tag,这确实会输出大量调试信息。要输出变量,您可以{{ DEBUG }}

其次,TEMPLATE_CONTEXT_PROCESSORS等设置在几个版本之前已弃用,并且没有任何效果。要添加上下文处理器,请将其添加到TEMPLATES设置的OPTIONS字典中的context_processors列表中。

第三,您链接的问题指出您不需要来添加您自己的上下文处理器,因为默认情况下已经提供了一个。只要您的IP位于INTERNAL_IPS列表中,{{ debug }}{% if debug %}就可以开箱即用。