DEBUG 为 False 时无静态文件
Posted
技术标签:
【中文标题】DEBUG 为 False 时无静态文件【英文标题】:No static files when DEBUG is False 【发布时间】:2012-09-28 04:31:07 【问题描述】:我在将应用程序部署到生产服务器时遇到了一些问题。如果我在 settings.py 中设置了
DEBUG = True
TEMPLATE_DEBUG = DEBUG
然后一切正常,但如果我将设置更改为:
DEBUG = False
TEMPLATE_DEBUG = DEBUG
然后我的应用程序坏了。我没有看到静态文件(js、css、...),并且在管理面板中我无法添加/编辑我的注册模型。 您有什么建议可以解决这个问题吗?
我的环境:
Python 2.7.3 Django 1.4.1 nginx 1.2.3 uwsgi 1.3【问题讨论】:
【参考方案1】:我也有这个问题,我解决了。
试试看
在 settings.py 中
DEBUG = False
然后添加
DEBUG404 = True
ALLOWED_HOSTS = ['*'] # it works but not secure, so use
ALLOWED_HOSTS = ['localhost', 'IP adrs'] #if you are running locally, then run with python manage.py runserver --insecure.You can give your webserver here.
然后在urls.py中添加
import os
if settings.DEBUG404:
urlpatterns += patterns('',
(r'^static/(?P<path>.*)$', 'django.views.static.serve',
'document_root': os.path.join(os.path.dirname(__file__), 'static') ),
)
【讨论】:
【参考方案2】:您应该阅读:Serving static files in production.
至少听起来您依赖于来自 contrib.staticfiles 的帮助器视图 staticfiles_urlpatterns()
,它仅用于开发:
这只有在 DEBUG 为 True 时才有效。
这是因为这种观点非常低效,而且可能不安全。 这仅用于本地开发,切勿使用 正在生产中。
【讨论】:
感谢您的提示。更改后,我的主站点正确加载了所有静态文件,但管理面板仍然存在问题。如果我禁用了调试模式,那么我在管理站点中注册的模型将无法正常工作。我看到模型名称,但添加/编辑操作不可见。你知道我该如何解决这个问题吗? 我猜这与您的STATIC_ROOT
和ADMIN_MEDIA_PREFIX
设置有关。你读过这个:docs.djangoproject.com/en/1.4/releases/1.4/…?
我看到了这个文件,但看起来这不是一个原因。我尝试对这个问题提出另一个问题。再次感谢您对静态文件的建议。以上是关于DEBUG 为 False 时无静态文件的主要内容,如果未能解决你的问题,请参考以下文章
解决Django设置debug=False静态文件获取不到的问题
Apache Django 静态文件不提供 DEBUG=False [重复]
Django Elasticbeanstalk:当 Debug = False 时无法访问静态文件
当 Debug=False 时 Django Heroku 不提供静态文件