正确包含CSS

问题描述 投票:0回答:2

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

提前谢谢您, 弗洛

html css django dom django-templates
2个回答
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/


0
投票

在 Django Temple 中包含 css(或 js)的方法有很多种。 我将发布我在项目中使用的内容。

  1. 在任何使用 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">

© www.soinside.com 2019 - 2024. All rights reserved.