django 1.6 静态文件的配置

刚开始研究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">  

方法二:

方法一中有两个缺点:

  1. 静态文件地址不能为static
  2. 在django自带的admin页面中,是没有css效果的
    因此做一些改进:

在settings.py中添加:

STATICFILES_DIRS = (  
    'static',  
)  
STATIC_ROOT = os.path.join(BASE_DIR,'mysite/static')  

以上前提要在mysite文件夹里新建一个static文件夹,用于存放admin自带的css等静态,注意:STATICFILES_DIRSSTATIC_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')  

解决!

好开心!

    原文作者:kiwi
    原文地址: https://segmentfault.com/a/1190000000484873
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞