包括 Django 中的 css

Posted

技术标签:

【中文标题】包括 Django 中的 css【英文标题】:including css in Django 【发布时间】: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 中处理静态文件发生了一些变化。 【参考方案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_URLcss/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 好吧,我应该说得更好。我的意思是简单地传达媒体根不只是像鲍里斯那样用于上传。它必须用于其他任何内容(您不需要在其中存储其他静态媒体文件),但它不是上传独有的。

以上是关于包括 Django 中的 css的主要内容,如果未能解决你的问题,请参考以下文章

在 Django 中的 css 文件中加载静态文件

css中的django变量-我可以使用模板吗

为啥 CSS 中的 background:url 不能与 Django 一起使用?

为啥 CSS 中的 background:url 不能与 Django 一起使用?

CSS 文件中的 Django 媒体 URL

Django中的内联CSS可以避免吗?