【问题标题】:including css in Django包括 Django 中的 css
【发布时间】:2011-09-01 19:27:59
【问题描述】:

我是 Django 新手,我很难在模板中包含 css 样式。

我阅读了this 并尝试做同样的事情,但它不适合我。

我的模板:

{% load static %}<html><head><link href="{% get_static_prefix %}/style.css" rel='stylesheet' type='text/css' /></head><body>

我得到的 HTML:

<head><link href="C:/Users/Nayish/workspace/am/src/am/static/style.css"rel='stylesheet'type='text/css' /></head>

请注意,这是包含我的 css 的文件夹。

谢谢,鲍里斯。

【问题讨论】:

  • 您是尝试静态提供它们还是仅引用 css 文件?
  • 任何一个都可以...但是 2'ed 会更好。
  • 您能否用您正在使用的 Django 版本更新您的问题?在 Django 1.3 中处理静态文件发生了一些变化。

标签: django django-templates


【解决方案1】:

确保您没有混淆STATIC_ROOTSTATIC_URL 设置。

STATIC_ROOT 定义文件在存储系统上的位置(通常是用于本地开发的本地硬盘),而STATIC_URL 定义服务器为它们提供服务的 URL。第二个通常在模板中被引用,也是{% get_static_prefix %}模板标签返回的值。

【讨论】:

    【解决方案2】:

    我猜你没有使用静态 css 表。我总是这样做:

    <html>
    <head>
                {%block stylesheet %}
                   <style type="text/css" title="currentStyle"> 
                       @import "{{MEDIA_URL}}css/style.css";
                   </style>
                {% endblock stylesheet%}
       ....
    

    然后我设置我的媒体根目录,并将文件存储为

     MEDIA_ROOT=<fullyquallified patyh>/Media/css/<css files>
     MEDIA_URL=http://localhost/mysite/
    

    需要注意的是,STATIC_URL 如果未定义,则默认为MEDIA_URL

    【讨论】:

    • Media root 不应该存储用户上传的文件吗?这是一个好习惯吗?
    • 不,site_media(或您设置的任何内容)适用于您所有项目的静态资源。这包括上传,但也包括您的图片、javascript、CSS 等。
    • @chrisdpratt:对于 Django 1.3 的 staticfiles 应用程序 (docs.djangoproject.com/en/dev/ref/contrib/staticfiles) 来说,这不再完全正确。也没有错,你不用staticfiles
    • 好吧,我应该说得更好。我的意思是简单地传达媒体根不只是像鲍里斯那样用于上传。它必须用于其他任何内容(您不需要在其中存储其他静态媒体文件),但它不是上传独有的。
    猜你喜欢
    • 1970-01-01
    • 2017-12-26
    • 2016-04-13
    • 2010-10-25
    • 2011-03-31
    • 2013-08-27
    • 1970-01-01
    • 1970-01-01
    • 2011-02-21
    相关资源
    最近更新 更多