django不加载从“base.html”扩展的HTML文件中的CSS文件

chhkpiq4  于 2022-11-26  发布在  Go
关注(0)|答案(2)|浏览(97)

我有一个base.html,我的options.html是这样扩展的
第一个
问题是CSS没有被加载/应用。
在Web控制台中(当我运行python manage.py runserver时),转到“选项”页面,然后我可以看到webpage/base.css已加载(即GET /static/webpage/base.css已打印),但webpage/options.css未加载。
我以为我的静态路径有问题,但如果我移动
<link rel="stylesheet" type="text/css" href="{% static 'webpage/options.css' %}">到我的base.html(然后转到我的home页面),然后我看到GET /static/webpage/options.css现在已经打印出来了,那里的css确实生效了。
为什么它没有加载到options.html文件中?注意,这个问题不是关于CSS更改没有生效(直到硬刷新、缓存清除等),而是看起来文件没有加载

k0pti3hp

k0pti3hp1#

当一个HTML文件扩展另一个HTML文件时,它需要将其所有内容都放在块中,这样它就可以插入到base.html中-否则它就不知道把它放在哪里。
在本例中,您需要创建类似于
base.html

<head>
...
{% block htmlhead %}
{% endblock htmlhead %}
</head>

然后将该块包含在options.html中

{% block htmlhead %}
{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'webpage/options.css' %}">     
{% endblock htmlhead %}
e0uiprwp

e0uiprwp2#

根据Template继承文档,我相信这三段说明了一切。
block标记所做的一切就是告诉模板引擎子模板可以覆盖模板的这些部分。
extends标记是这里的关键。它告诉模板引擎这个模板“扩展”了另一个模板。当模板系统评估这个模板时,它首先定位父模板-在本例中是“base.html”。
此时,模板引擎将注意到base.html中的三个block标记,并将这些块替换为子模板的内容。
因此,基本上,当您延伸 backbone 时,只会取代图块内的零件,而忽略其他所有零件。
为了完成您想要的任务,您需要在base.html头中添加另一个块,并在options.html中使用它。

相关问题