转自http://blog.segmentfault.com/silhouette/1190000000484873,亲测可行,另外别忘了了import settings
刚开始研究django,完全一头雾水,为了静态文件配置的问题研究了好几天都没效果,网上的方法几乎都行不通,快放弃的时候总算解决啦!一定要和大家分享下,如果有人和我一样悲惨,希望这篇文章能帮到你^ ^
window7 python2.7 django1.6.2
目录结构:
mysite
|--manage.py
| |--mysite
| | |--init.py
| | |--settings.py
| | |--urls.py
| | |--views.py
| | |--wsgi.py
| |--template
| | |--...(html 文件)
| |--static
| | |--css
| | |--js
static文件夹是可以放在任意位置的,这里我选择放在根目录下
解决方法有两个:
方法一:
在settings.py中添加:
STATICFILES_DIRS = (
'static'
)
注意:这里('static'后面)不能加逗号!
在urls.py中添加:
url(r'^staticfiles/(?P<path>.*)$','django.views.static.serve',{'document_root':settings.STATICFILES_DIRS, 'show_indexes': True}),
注意:这里不能写static,而要换成别的名字,此处换为staticfiles
在html中引用方法:
<link href="/staticfiles/css/test.css" rel="stylesheet" type="text/css">
方法二:
方法一中有两个缺点:
- 静态文件地址不能为static
- 在django自带的admin页面中,是没有css效果的
因此做一些改进:
在settings.py中添加:
STATICFILES_DIRS = (
'static',
)
STATIC_ROOT = os.path.join(BASE_DIR,'mysite/static')
以上前提要在mysite文件夹里新建一个static文件夹,用于存放admin自带的css等静态,注意:STATICFILES_DIRS
和STATIC_ROOT
地址不能相同,'static'后要加逗号(好奇怪...一会儿要加一会儿不要加...我也不清楚是为什么,但是不加就会报错)
然后运行python manage.py collectstatic
这个命令应该是把STATICFILES_DIRS
指定下的文件都复制到了STATIC_ROOT
指定的文件夹下吧...
在urls.py中添加:
url(r'^static/(?P<path>.*)$','django.views.static.serve',),
在views.py中需要改成:
return render_to_response("test.html",RequestContext(request))
在html中引用:
<link href="{{STATIC_URL}}css/css.css" rel="stylesheet" type="text/css">
以上~
但是如果你按步骤做到现在,应该会出现编码错误的问题:
Exception Type: UnicodeDecodeError
据说这是python的一个bug,找到出错地方:
Exception Location: C:\Python27\lib\mimetypes.py in enum_types, line 249
所以我们需要在mimetypes.py文件中,添加
reload(sys)
sys.setdefaultencoding('gb18030')