【问题标题】:Django templates extending and CSSDjango 模板扩展和 CSS
【发布时间】:2012-01-10 16:56:45
【问题描述】:

我有这样的基本模板:

<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 作为文本直接包含在基本模板中,则它可以正常工作。 静态文件配置OK。

【问题讨论】:

    标签: python django django-templates


    【解决方案1】:

    您是否将 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吗?

    【讨论】:

      【解决方案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 },然后更改 .navbar-inverse将您的 html 中的标签标记为 navbar-inverse2。如果您只是将您的样式表链接到 &lt;head&gt; 中的原始样式表下,并且会呈现该更改:您正在前往解决方案镇的路上!

      【讨论】:

        【解决方案3】:

        “不起作用”是什么意思?是否没有进行造型,是否缺少图像等?您确定已将更改保存到 CSS 文件吗?好像在/static/style.css找到了一个文件,所以想必那里有什么东西……

        【讨论】:

        • 浏览器不使用 CSS。是的,我确定。
        • 那么如果您在加载页面后检查源代码,并查看 /static/style.css,是否会显示正确的 CSS 文件?
        【解决方案4】:

        你使用 STATIC_URL 或 MEDIA_URL 来访问 css 吗?如果是,您是否在设置中将 django.contrib.contenttypes 添加到已安装的应用程序中?还要检查设置中的 STATICFILES_DIRS 和 STATIC_ROOT/MEDIA_ROOT。详情请浏览https://docs.djangoproject.com/en/1.3/ref/contrib/staticfiles/。 此外,如果您使用 MEDIA_URL,您可能会尝试在 url 中提供媒体根目录,例如:

        if settings.DEBUG:
        urlpatterns += patterns('',        
            (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
        )
        

        【讨论】:

        • 如果我不使用基本模板,直接将这个css文件包含到'search.html'模板中,它工作正常,所以静态文件没有问题。
        猜你喜欢
        • 2017-04-24
        • 2011-10-14
        • 2015-03-03
        • 2010-11-27
        • 1970-01-01
        • 2010-11-27
        • 2014-07-05
        • 1970-01-01
        相关资源
        最近更新 更多