包括 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_ROOT
和STATIC_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的主要内容,如果未能解决你的问题,请参考以下文章
为啥 CSS 中的 background:url 不能与 Django 一起使用?