Django block.super不会在父模板中呈现变量集

时间:2014-01-21 18:44:48

标签: python django django-templates template-inheritance

我有以下情况:

2次观看:

厂景:

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

视图2:

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

为什么在调用{{block.super}}时不会输出'var1'的值?

我在settings.py中定义了'django.core.context_processors.request'。我错过了什么?

2 个答案:

答案 0 :(得分:2)

template2.html扩展了template1.html,但这并不意味着view2扩展了view1。您需要将var1添加到view2中的上下文信息。

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

答案 1 :(得分:1)

如果您未在var1的上下文中提供view2,那么您认为该模板将如何获得它?将您的settings.TEMPLATE_STRING_IF_INVALID更改为空字符串以外的其他内容,您就会知道var1未显示的原因...