我正在研究Django项目,并编辑其他视图继承的基础模板。我通常具有以下格式的上下文变量:
context = {
'metadata': {
'data1': value,
# etc
},
'data': {
'value1': True,
'value2': False,
# etc
},
}
我一直试图根据'data'中的值是true / false来添加标签,例如:
{% if data.value1 is True %}
{% load some_module %}
{% endif %}
{% if data.value2 is True %}
{% load something_else %}
{% endif %}
我的问题是,即使data.value1为False,模板也会尝试在if块中加载程序包,从而导致页面损坏。我不知道我要去哪里。您不能引用这样的上下文变量吗?我只是在使用if块错误吗?有更好的方法吗?
更新: 我正在尝试根据项目是否已在设置文件中配置了必要的ID,有条件地在Django-Analyical中加载一些跟踪标签。
我认为实际的代码是
{% block analyticsscripts %}
{% if analytics.analytical %}
{% load analytical %}
{% endif %}
{% if analytics.clickmap %}
{% load clickmap %}{% clickmap %}
{% endif %}
{% if analytics.clicky %}
{% load clicky %}{% clicky %}
{% endif %}
{% if analytics.crazyegg %}
{% load crazy_egg %}{% crazy_egg %}
{% endif %}
{% endblock %}
上下文处理器中的实际代码示例是
context['analytics'] = {
'analytical': bool('analytical' in settings.INSTALLED_APPS),
'clickmap': bool(settings.CLICKMAP_TRACKER_ID),
'clicky': bool(settings.CLICKY_SITE_ID),
'crazyegg': bool(settings.CRAZY_EGG_ACCOUNT_NUMBER),
'gauges': bool(settings.GAUGES_SITE_ID),
'googleanalytics': bool(settings.GOOGLE_ANALYTICS_JS_PROPERTY_ID),
'gosquared': bool(settings.GOSQUARED_SITE_TOKEN),
}
在django项目的设置文件中引用其中一些值(默认情况下设置为False,直到指定它们)
CLICKMAP_TRACKER_ID = False
CLICKY_SITE_ID = False
CRAZY_EGG_ACCOUNT_NUMBER = False
GAUGES_SITE_ID = False
GOOGLE_ANALYTICS_JS_PROPERTY_ID = False
GOSQUARED_SITE_TOKEN = False
HOTJAR_SITE_ID = False
HUBSPOT_PORTAL_ID = False
INTERCOM_APP_ID = False