[转]Django1.6x static静态文件配置

   转自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">  

方法二:

方法一中有两个缺点:

  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:Python27libmimetypes.py in enum_types, line 249

所以我们需要在mimetypes.py文件中,添加

reload(sys)  
sys.setdefaultencoding('gb18030')  

   

    

原文地址:https://www.cnblogs.com/Bird-Man/p/3884705.html