Определение “глобальной переменной” в шаблонах Django

прочитайте это: Ключевое слово defer в Swift 2: попробуйте / наконец сделали правильно

, например:

print("Step 1")

do {
    defer { print("Step 2") }
    print("Step 3")
    print("Step 4")
}

print("Step 5")

Вывод: 1, 3, 4, 2,5

6
задан Achimnol 23 June 2009 в 01:46
поделиться

3 ответа

Если URL-адрес относится к представлению, вы можете передать URL-адрес из своего представления. Если URL-адрес должен быть действительно глобальным в ваших шаблонах, вы можете поместить его в обработчик контекста:

def object_url(request):
    return {'object_url': reverse('myapp.views.dashboard')}
7
ответ дан 10 December 2019 в 00:43
поделиться

Ну, это своего рода злоупотребление наследованием шаблонов, но вы можете использовать {{block.super}} , чтобы поместить object_url в свои блоки.

Другими словами. слов, в шаблоне среднего уровня выполните:

{% block sidebar %}{{ object_url }}{% endblock %}
{% block content %}{{ object_url }}{% endblock %}

А затем в шаблонах блоков используйте:

{% block sidebar %}
... {{ block.super }}...
{% endblock %}

Это не лучшая идея, потому что она не позволяет вам помещать что-либо, кроме {{object_url}} в свой блок ... но он работает. Только никому не говори, что ты получил это от меня!

0
ответ дан 10 December 2019 в 00:43
поделиться

В каждом унаследованном шаблоне любой код вне переопределений блоков не выполняется. Итак, в вашем примере вы должны вызвать тег {% url%} внутри каждого блока или использовать контекстный процессор для установки «глобальной» переменной.

0
ответ дан 10 December 2019 в 00:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: