Django模板扩展与CSS

11 投票
4 回答
14374 浏览
提问于 2025-04-17 07:28

我有一个这样的基础模板:

<head>
    <title>{% block title %}{% endblock %}</title>

    <link rel="stylesheet" href="/static/style.css"/>

当我刷新页面时,日志里出现了这个文本:

[01/Dec/2011 18:22:00] "GET /search/ HTTP/1.1" 200 2760
[01/Dec/2011 18:22:00] "GET /static/style.css HTTP/1.1" 200 54

这说明CSS文件从服务器加载是没问题的。但是它就是不生效!如果我把这个CSS直接写成文本放在基础模板里,它就能正常工作。静态文件的配置也是没问题的。

4 个回答

1

你说的“没效果”具体指什么呢?是样式没有应用上,还是图片缺失了,等等?你确定你已经把对CSS文件的修改保存了吗?看起来在/static/style.css这个位置找到了一个文件,所以应该里面有一些内容……

2

这虽然是个很晚的回复,但现在可能比五年前更有用:确保你正在编辑的样式表不是由你网站的服务器生成的。

我不太确定@RankoR是否在修改style.css文件,但这些修改没有在网站上显示出来,或者根本没有任何样式应用到模板上。如果你遇到前者的情况:你可以通过在根文件夹中添加自己的.css文件夹,并在其中添加你想要更改的样式定义,快速排除样式被其他地方生成的可能性。

比如说,你想自定义导航栏的样式——如果你想把 .navbar-inverse {background-color: #222; border-color: #090909 } 改成 .navbar-inverse {background-color: #222; border-color: #090909; font:20px bold Arial, sans-serif },你可以在新的空白.css文件中添加 .navbar-inverse2 {background-color: #222; border-color: #090909; font:20px bold Arial, sans-serif },然后把你的html中的 .navbar-inverse 标签改成 navbar-inverse2。如果你在 <head> 中把你的样式表放在原来的样式表下面,并且这个更改能显示出来:那你就快要找到解决办法了!

26

你是不是把CSS放在一个会把它放到网页头部的区域里?

/* base.html */
<html>
    <head>
        <title>{% block title %}{% endblock %}</title>
        {% block extra_head %}{% endblock %}
    </head>
    <body>
        {% block content %}{% endblock %}
    </body>
</html>


/* another template */
{% extends 'base.html' %}
{% block title %}My Title{% endblock %}
{% block extra_head %}
    <link rel="stylesheet" href="/static/style.css"/>
{% endblock %}
{% block content %}
    <h1>This is my page!</h1>
{% endblock %}

在你的浏览器里,页面的源代码看起来怎么样?样式表在头部吗?你能点击链接看到实际的CSS吗?

撰写回答