适当地包括CSS

时间:2014-04-04 06:06:54

标签: html css django dom django-templates

我有一个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

1 个答案:

答案 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/