码迷,mamicode.com
首页 > 其他好文 > 详细

django静态文件配置

时间:2014-09-21 12:54:30      阅读:197      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   os   使用   文件   2014   div   

下载了个网页模板,建好Django工程,runserver后页面不显示css,jpg之类的静态文件。找了一下网上的解决方案,照着做也没对,主要是他们没说为什么要这么做,每个人搭建的环境不一样,解决的方法肯定也不完全一样。这里把解决的思路写下来,供大家参考。

 

1. 静态文件丢失是因为文件路径找不到。server端会有如下提示

[21/Sep/2014 11:28:01] "GET /static/img/f.png HTTP/1.1" 404 1941
[21/Sep/2014 11:28:01] "GET /template/static/css/style.css HTTP/1.1" 404 1980
[21/Sep/2014 11:28:01] "GET /static/img/r.png HTTP/1.1" 404 1941
[21/Sep/2014 11:28:01] "GET /static/img/t1.png HTTP/1.1" 404 1944

2. 需要修改settings.py文件中的STATIC_ROOT, STATIC_URL, STATICFILES_DIRS三个配置项,但具体怎么修改就与各人搭建的环境有关了。

STATIC_URL配置的是匹配的静态文件请求的url,这与页面中的链接地址要一致。如html文件中的静态文件链接为/static/,则配置项为

* foo.html *
<link rel="stylesheet" type="text/css" href="/static/css/style.css">

* settings.py *
STATIC_URL = /static/

STATIC_URL的作用等同于在urls.py文件中匹配url地址请求

3. 当匹配到静态文件请求时,则会在STATICFILES_DIRS中查找静态文件,静态文件一般都是集中存放,在同一父目录下,因此可以设置STATIC_ROOT来减少重复输入。由于配置项不支持相对路径,只能使用绝对路径,考虑到移植的灵活性,STATIC_ROOT可写为

STATIC_ROOT = os.path.join(os.path.dirname(__file__), template/static)

这里的__file__是settings.py文件,即以settings.py文件所在的目录出发,找到静态文件所处的目录。

4. 最后是静态文件所处的位置

STATICFILES_DIRS = (
    (css, os.path.join(STATIC_ROOT, css)),
    (img, os.path.join(STATIC_ROOT, img)),
)

每类静态文件设置为一个元组,元组第一项‘css’,‘img’等要与html中链接地址保持一致,不能出现配置的(‘img‘, ...),但请求的链接地址为:.../static/images/abc.jpg,而元组第二项的‘css’和‘jpg‘要与文件夹名一致。

 

django静态文件配置

标签:style   blog   http   color   os   使用   文件   2014   div   

原文地址:http://www.cnblogs.com/newerly/p/3984408.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!