Django: ссылочная контекстная переменная в блоке {% if%} - PullRequest
0 голосов
/ 27 февраля 2019

Я работаю над проектом 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...