django静态文件处理

  从开始接接触python这门语言已有四年了,中间陆续的学习,又不断的忘记,所以基本上是没有系统的知识体系。但是挺喜欢这门简洁,强大的动态语言。最近自己私人有个项目要做,虽然之前一直是用java开发,但自己一个人做东西总想找点新鲜有激情的东西玩下,不用考虑团队知识的问题。所以毫不犹豫的选择用python。因为是个web项目,所以框架就用django(python的web框架也蛮多,听说web.py很轻量级)。其实学习任何新的东西都是这样,光看书是没用的,一定要多动手,多实践。好了,不扯了,回答这篇blog的重点上来。

  django对url和处理的具体代码的映射是在urls.py里配置的,如下:

urlpatterns = patterns('',
url(r
'^$', 'mysite.views.home', name='home'),
url(r
'^mysite/', include('mysite.foo.urls')),
url(r
'^admin/', include(admin.site.urls)),
)

  这很好理解。但是静态文件(css,js)怎么处理呢?,静态文件是不需要做上面的映射的。

  在要在你的app工程下面新建一个"static"的文件夹,把静态资源放到些文件夹里(目录结构如下图),就可以通过http://localhost:8000/static/images/1.jpg访问了。

  

  但是现在有个问题:如果把settings.py配置改下:

DEBUG = False

  把DEBUG从True改成False后就会出现404(必需指定404和500错语页面,如上图的目录结构)找不到页面的错误。原因是DEBUG为True时django会默认帮我们处理静态文件,而为False的话还需要我们做点事。在全局usrs.py中加下如下代码:

from django.conf import settings
if settings.DEBUG is False:
urlpatterns
+= patterns('',
url(r
'^static/(?P<path>.*)$', 'django.views.static.serve', {
'document_root': settings.STATIC_ROOT,
}),
)

修改settings.py中的设置:

STATIC_ROOT = 'F:/testweb/static'

以上设置是指定静态资源的绝对路径(根据你电脑的具体路径设置正确值),现在应该可以正确访问了。

总结:

  • 在DEBUG为true时我们只需要建立static目录后,把静态资源放进去就可以访问。在DEBUG为False时需要我们手动指定静态资源目录,并配置映射关系。
  • 在正式环境下建议不采用django处理静态资源文件,这样对应用服务器压力较大,也不好做cdn。可以用ngix,apache部署静态资源。
posted @ 2011-09-18 16:54  海鸟  阅读(2596)  评论(0编辑  收藏  举报