Я работаю над проектом Django и редактирую базовый шаблон, от которого наследуются остальные виды.У меня есть переменная контекста, как правило, в этом формате:
context = {
'metadata': {
'data1': value,
# etc
},
'data': {
'value1': True,
'value2': False,
# etc
},
}
Я пытался добавить теги, основываясь на том, являются ли значения в «данных» истинными / ложными, например:
{% if data.value1 is True %}
{% load some_module %}
{% endif %}
{% if data.value2 is True %}
{% load something_else %}
{% endif %}
Моя проблема в том, что даже если data.value1 имеет значение False, шаблон пытается загрузить пакеты в этом блоке if, что приводит к повреждению страниц.Я не могу понять, где я иду не так.Вы не можете ссылаться на переменные контекста, как это?Я просто использую блок if неправильно?Есть ли лучший способ сделать это?
ОБНОВЛЕНИЕ: я пытаюсь условно загрузить некоторые из тегов отслеживания в 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