我有一个 Django 模板(主页),其中包含另一个模板(导航栏)。
我的主页有一个 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 + 导航栏),但我不认为像这样包含 CSS 是好的。
使用 Django 的
include
在 HTML 页面中包含 CSS 的正确方法是什么?
在情况(1)中,即使我使用
{% block %}
,main_page的CSS仍然保留,并且没有替换为我在navbar.html中指定的CSS。这是正常行为吗(因为使用了 include 而不是 extends ?)?
提前谢谢您, 弗洛
为了扩展模板块,您需要包含
{{ 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/
在 Django Temple 中包含 css(或 js)的方法有很多种。 我将发布我在项目中使用的内容。
喜欢,
“main_page.html”内
<link rel="stylesheet" type="text/css" href="style.css">
“navbar.html”内
<link rel="stylesheet" type="text/css" href="navbar.css">