我对 Django 很陌生,并试图用嵌套模板继承来重新组织我的模板结构。
我所拥有的是:
- base.html
- child1.html
- child2.html
- child3.html
每个孩子扩展 base.html 并拥有自己的带有上下文的 TemplateView。即使使用离线压缩,这也有效
现在我添加了另一层:
base.html
- base_a.html
- child1.html
- base_b.html
- child2.html
- child3.html
此时我应该补充一点,base_a 和 base_b 没有自己的 TemplateView,但需要上下文中的值。我以为我只能像这样构造我的代码,并且它在没有离线压缩的情况下工作得很好。但是通过压缩,除了base.html,我得到了“错误解析模板”。我猜这要么是因为 css,要么是因为 base_a 和 base_b 没有模板视图并且可能不知道上下文?
所以我的问题是:有没有办法让这段代码工作?我是否总是需要每个 html 文件的 TemplateViews?
我的文件看起来像这样:(我简化了一点)
base.hmtl:
{% load compress %}
{% load static %}
(some meta stuff here)
<head>
(some stylesheets here)
{% compress css %}
{% block css %}
{# Placeholder for subpage specific css #}
{% endblock css %}
{% endcompress %}
</head>
<body>
{% block subnavigation %}
{% endblock %}
{% block filter %}
{% endblock %}
{% block content %}
{% endblock %}
</body>
base_a.html:
{% extends 'base.html' %}
{% load static %}
{% block subnavigation %}
<div>
{{some_context_value}}
</div>
{% endblock %}
child1.html:
{% extends './base_a.html' %}
{% load static %}
{% block filter %}
<div>
{{ another_context_value }}
</div>
{% endblock %}
{% block css %}
(some css here)
{% block css %}
{% block content %}
(some more html here)
{% block css %}