当DEBUG为False时,没有静态文件

4

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

10
您应该阅读:生产环境中提供静态文件 至少看起来您正在依赖contrib.staticfiles中的辅助视图staticfiles_urlpatterns(),但这只适用于开发环境:

仅在DEBUG为True时才有效。

这是因为此视图非常低效且可能不安全。 这仅用于本地开发,永远不应在生产环境中使用。


谢谢你的提示。在更改后,我的主站正确加载了所有静态文件,但是我仍然有一些关于管理面板的问题。如果我禁用DEBUG模式,那么我在管理站点中注册的模型将无法正常工作。我可以看到模型名称,但是添加/编辑操作不可见。你有任何想法如何解决这个问题吗? - Gie
жҲ‘зҢңиҝҷдёҺдҪ зҡ„STATIC_ROOTе’ҢADMIN_MEDIA_PREFIXи®ҫзҪ®жңүе…ігҖӮдҪ иҜ»иҝҮиҝҷдёӘеҗ—пјҡhttps://docs.djangoproject.com/en/1.4/releases/1.4/#django-contrib-adminпјҹ - arie
我看到了这份文件,但似乎它并不是原因。我尝试通过另一个问题来解决这个问题。再次感谢您在静态文件方面的建议。 - Gie

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')} ),
    )

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接