我有一个Django模板(主页),其中包含另一个模板(导航栏) 我的主页面有一个CSS文件,导航栏有一个CSS文件 我的问题是:如何在主页面中正确包含导航栏的CSS?
我试过这个(1):
main_page.html
{% block css %}
<link rel="stylesheet" type="text/css" href="style.css">
{% endblock %}
navbar.html
{% block css %}
<link rel="stylesheet" type="text/css" href="navbar.css">
{% endblock %}
或只是(2)
main_page.html
<link rel="stylesheet" type="text/css" href="style.css">
navbar.html
<link rel="stylesheet" type="text/css" href="navbar.css">
然后在main_page.html
{% include "base/navbar.html" %}
在每种情况下,两个CSS都被加载(main_page + navbar),但我不认为包含这样的CSS是好的。
在包含include
Django的HTML页面中包含CSS的正确方法是什么?
在情况(1)中,即使我使用{% block %}
,main_page的CSS仍然保留,并且不会被我在navbar.html中指定的CSS替换。这是正常的行为(因为使用include而不是extends?)?
提前谢谢你, FLO
答案 0 :(得分:2)
为了扩展模板块,您需要包含{{ block.super }}
,这将包括您在父模板中声明的内容:
{% block css %}
{{ block.super }}
<link rel="stylesheet" type="text/css" href="navbar.css">
{% endblock %}
但更好的解决方案是使用sekizai
这是一个可让您轻松添加资源的库:http://django-sekizai.readthedocs.org/en/latest/
还有更复杂的解决方案允许您压缩和分组资产: http://django-pipeline.readthedocs.org/