我有一个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更改没有生效(直到硬刷新、缓存清除等),而是看起来文件没有加载
2条答案
按热度按时间k0pti3hp1#
当一个HTML文件扩展另一个HTML文件时,它需要将其所有内容都放在块中,这样它就可以插入到base.html中-否则它就不知道把它放在哪里。
在本例中,您需要创建类似于
base.html
然后将该块包含在options.html中
e0uiprwp2#
根据Template继承文档,我相信这三段说明了一切。
block标记所做的一切就是告诉模板引擎子模板可以覆盖模板的这些部分。
extends标记是这里的关键。它告诉模板引擎这个模板“扩展”了另一个模板。当模板系统评估这个模板时,它首先定位父模板-在本例中是“base.html”。
此时,模板引擎将注意到base.html中的三个block标记,并将这些块替换为子模板的内容。
因此,基本上,当您延伸 backbone 时,只会取代图块内的零件,而忽略其他所有零件。
为了完成您想要的任务,您需要在base.html头中添加另一个块,并在options.html中使用它。