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_ROOTADMIN_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 不提供静态文件

为啥当 Debug 设置为 False 时,Django 会为静态媒体生成 HTTP 500 错误?

django2.2 DEBUG=True/False时如何设置静态文件(image js css等)