【问题标题】:No static files when DEBUG is FalseDEBUG 为 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

【问题讨论】:

    标签: django django-templates django-admin


    【解决方案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/…
      • 我看到了这个文件,但看起来这不是一个原因。我尝试对这个问题提出另一个问题。再次感谢您对静态文件的建议。
      猜你喜欢
      • 1970-01-01
      • 2012-11-27
      • 2016-01-13
      • 2019-12-02
      • 2019-06-01
      • 2020-10-27
      • 2016-11-26
      • 1970-01-01
      • 2018-08-24
      相关资源
      最近更新 更多