django 把 debug 设成 False 之后...

2015-05-27 11:10:58 +08:00
 pythonee
开始没有改ALLOWED_HOST,返回Bad Request,知道自己错了,后面设置成ALLOWED_HOST = [ '*', ],可以正常访问,但是,悲剧的是,就一个页面出了问题,发现这个页面的static的不好使了,一旦去掉这些static,页面还是可以渲染,关键在本地这个问题又重现不出来
2901 次点击
所在节点    Python
4 条回复
yakiang
2015-05-27 11:26:48 +08:00
debug = False 时就不支持 static 了,自己用 Nginx 之类的来代理静态文件
pythonee
2015-05-27 11:47:00 +08:00
@yakiang 已经做了,其他页面也没有问题,可就一个页面有问题,去掉一些含有{%static }的,页面可以渲染出来,关键另外一个环境没有问题
zbing3
2015-05-27 13:58:41 +08:00
尝试着用 https://github.com/kennethreitz/dj-static 项目 看看, 不过线上确实应该用nginx靠谱一点
shiziwen
2015-05-27 16:08:12 +08:00
当debug=True的时候,Django是自动完成static相关的设置的。
楼主有些页面没有渲染出来,应该是一些静态文件没有找到。
当debug=False的时候,需要手动指定。
在url.py文件里面,添加如下代码即可:

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

如果是debug=False一般是线上部署时使用的,这个时候建议用nginx等服务器进行静态文件的处理。

附上一些参考:
http://www.tangowithdjango.com/book17/chapters/templates_static.html#static-media-files-and-templates

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/194052

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX