DEBUG为False时没有静态文件

时间:2012-10-07 21:25:32

标签: django django-templates django-admin

将应用程序部署到生产服务器时遇到了一些问题。如果我已设置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

2 个答案:

答案 0 :(得分:10)

您应该阅读:Serving static files in production.

至少听起来你依赖的是contrib.staticfiles中的帮助器视图staticfiles_urlpatterns(),它仅用于开发:

  

这只有在DEBUG为True时才有效。

     

这是因为这种观点非常低效,而且可能不安全。   这仅适用于本地开发,不应使用   在生产中。

答案 1 :(得分: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')} ),
    )