прочитайте это: Ключевое слово 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
Если URL-адрес относится к представлению, вы можете передать URL-адрес из своего представления. Если URL-адрес должен быть действительно глобальным в ваших шаблонах, вы можете поместить его в обработчик контекста:
def object_url(request):
return {'object_url': reverse('myapp.views.dashboard')}
Ну, это своего рода злоупотребление наследованием шаблонов, но вы можете использовать {{block.super}}
, чтобы поместить object_url в свои блоки.
Другими словами. слов, в шаблоне среднего уровня выполните:
{% block sidebar %}{{ object_url }}{% endblock %}
{% block content %}{{ object_url }}{% endblock %}
А затем в шаблонах блоков используйте:
{% block sidebar %}
... {{ block.super }}...
{% endblock %}
Это не лучшая идея, потому что она не позволяет вам помещать что-либо, кроме {{object_url}}
в свой блок ... но он работает. Только никому не говори, что ты получил это от меня!
В каждом унаследованном шаблоне любой код вне переопределений блоков не выполняется. Итак, в вашем примере вы должны вызвать тег {% url%}
внутри каждого блока или использовать контекстный процессор для установки «глобальной» переменной.