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
не появляется...