网站的css js 和一些图片等非程序相关的文件,可以看成是静态文件。怎么正确配置,才能让Django网站解析到静态文件呢?
简明来说,要注意两个文件:settings.py url.py。
Django 1.3之前只有MEDIA_ROOT,不管是网站静态文件(js、css等), 还是用户上传的文件都在同一个目录下。而 1.3开始将两个目录隔离开了。
一、1.3 之前将静态文件和用户文件混放的方法:
1、settings.py:
-
import os
-
MEDIA_ROOT = os.path.join(os.path.dirname(__file__), 'media')
-
# MEDIA_URL = '/media/'
* 注意: 我们的静态文件在根目录下的static文件里,需要自己创建,如果文件夹名不一样,join的参数改成自己起用的名字.
2、urls.py:
-
from django.conf import settings
-
(r'^site_media/(?P.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
* 注意:site_media,这个可以随自己喜欢的名字,建议参考Django最佳实践做法。
3、最后就是如何在templates里使用静态文件了:
-
<script type="javascript/text" src="/site_media/js/config.js"></script>
-
<link rel="stylesheet" type="text/css" href="/site_media/css/contents.css"/>
-
<img src="/site_media/images/logo.ipg" alt=""/>
4、这样的配置,在开发环境中式能正常解析的,在产品部署环境中,只需修改settings文件的
MEDIA_URL = '/media/' 需要改成实际的域名 MEDIA_URL = ''
二、1.3 之后将静态文件和用户文件独立存放的方法:
1、settings.py:
2、urls.py:
-
from django.conf import settings
-
(r'^site_static/(?P.*)$', 'django.views.static.serve', {'document_root': settings.STATIC_PATH}),
3、在工程目录创建 static 目录作为存放静态文件的目录
4、html 中引用:
-
<script type="javascript/text" src="/site_static/js/config.js"></script>
-
<link rel="stylesheet" type="text/css" href="/site_static/css/contents.css"/>
-
<img src="/site_static/images/logo.ipg" alt=""/>
**** 以上两种方法推荐使用第二种,第一个 media 可以存放用户上传的文件,第二中专门用来存放服务器静态文件.
阅读(2308) | 评论(2) | 转发(0) |