Django block.super не отображает набор переменных в родительском шаблоне

У меня есть следующий сценарий:

2 просмотра:

view1:

return render(request, 'template1.html', {'var1': 'value1'} )

view2:

return render(request, 'template2.html', {'var2': 'value2' } )

2 шаблона:

template1.html

{% block foo %}
{{ var1 }}
{% endblock %}

template2.html

{% extends template1.html %}
{% block foo %}
{{ block.super }}
{{ var2 }}
{% endblock %}

Желаемый вывод Template1.html:

value1

Реальный вывод Template1.html:

value1

Желаемый вывод Template2.html:

value1 value2

Реальный выход:

value2

Почему значение 'var1' не выводится, когда я вызываю {{block.super}}?

У меня есть 'django.core.context_processors.request' в моем файле settings.py. Что мне не хватает?

2 ответа

template2.html расширяет template1.html, но это не означает, что view2 расширяет view1. Вам необходимо добавить var1 к контекстной информации в view2.

# view2
return render(request, 'template2.html', {
    'var1': 'value1',
    'var2': 'value2'
})

Если вы не предоставите var1в контексте в view2 тогда как вы думаете, шаблон получит его? Измени свой settings.TEMPLATE_STRING_IF_INVALID к чему-то еще, кроме пустой строки, и вы будете знать, почему var1 не появляется...

Другие вопросы по тегам