http://www.cnblogs.com/jcli/archive/2011/09/18/2180504.html
从开始接接触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部署静态资源。
标题无“转载”即原创文章,版权所有。转载请注明来源:http://besteam.im/blogs/article/77/。 在水木的Python版问了一下, 在开发的时候MEDIA_ROOT不应该存放任何文件。它应该指向一个空的目录。运行Django的开发服务器时,需要在 from django.conf import settings if settings.DEBUG: urlpatterns += patterns(", url(r"^media/(?P<path>.*)$", \ "django.views.static.serve", \ {"document_root": settings.MEDIA_ROOT,}), ) 当工程被布署到Apache时也要记得给
更深层次的理解,这个东西其实是用来方便布署Django App的。考虑一下我们编写Django App的情况,经常会有一些静态的文件(JavaScript、图片等)。为了方便,把这些文件放置到App下面的 一是使用 url(r"^(?/static/P<path>.*)$", "django.views.static.serve",\ {"document_root" : "/path/to/project/app/static/"}) 每个App都要加入这条纪录,这样做的话,静态经过了Django的处理,速度太慢。 二是让用户手动写Apache的映射。将 三是由布署者将每个App内的 新的Django提供了一个方法自动地将所有的静态文件放在一起。只要在写App的时候创建一个static子目录专门保存静态文件就行了。在开发阶段,不必费心去做映射,不需要配置 在开发阶段,Django把 标题无“转载”即原创文章,版权所有。转载请注明来源:http://besteam.im/blogs/article/77/。 |