设置 debug = False 会使 Django 应用程序崩溃并出现以下错误,如何解决?

Posted

技术标签:

【中文标题】设置 debug = False 会使 Django 应用程序崩溃并出现以下错误,如何解决?【英文标题】:Setting debug = False makes the Django app crash with the following error, how to fix it? 【发布时间】:2019-09-26 08:05:56 【问题描述】:

它给出:内部服务器错误 当我尝试访问站点/管理员或任何其他应用程序时 尝试使用 heroku 部署我的应用程序。

这是来自 heroku 的日志:

文件“/app/.heroku/python/lib/python3.6/site-packages/django/utils/functional.py”,第 125 行,在 __cast 2019-05-08T15:15:47.484058+00:00 app[web.1]: return self.__text_cast()

2019-05-08T15:15:47.484060+00:00 应用程序[web.1]:文件“/app/.heroku/python/lib/python3.6/site-packages/django/utils/functional.py ",第 113 行,在 __text_cast

2019-05-08T15:15:47.484061+00:00 app[web.1]: return func(*self.__args, **self.__kw)

2019-05-08T15:15:47.484063+00:00 app[web.1]:文件“/app/.heroku/python/lib/python3.6/site-packages/django/urls/base.py ",第 86 行,反向

2019-05-08T15:15:47.484064+00:00 app[web.1]: raise NoReverseMatch("%s 不是注册的命名空间"% key)

2019-05-08T15:15:47.484066+00:00 app[web.1]: django.urls.exceptions.NoReverseMatch: 'promotions' 不是注册的命名空间

2019-05-08T15:15:47.484067+00:00 app[web.1]: 10.13.251.26 - - [08/May/2019:15:15:47 +0000] "GET /admin/login/ ?next=/admin/ HTTP/1.1" 500 0 "-" "-"

2019-05-08T15:17:06.098441+00:00 heroku[路由器]: at=info method=GET path="/" host=aapnik123.herokuapp.com request_id=18244196-eaec-43ef-be28-bb4cbbdee0b0 fwd="103.232.241.185" dyno=web.1 connect=1ms service=17ms status=200 bytes=7368 protocol=https

2019-05-08T15:17:06.098037+00:00 app[web.1]: 10.63.174.177 - - [08/May/2019:15:17:06 +0000] “GET / HTTP/1.1” 200 6967 "https://dashboard.heroku.com/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/74.0.3729.131 Safari/537.36"

2019-05-08T15:19:19.758608+00:00 heroku[路由器]: at=info method=GET path="/admin/" host=aapnik123.herokuapp.com request_id=17fea225-3ad5-4ec5-b817 -e941818ea8d7 fwd="103.232.241.185" dyno=web.1 connect=0ms service=3ms status=302 bytes=346 protocol=https

2019-05-08T15:19:19.759552+00:00 app[web.1]: 10.123.204.200 - - [08/May/2019:15:19:19 +0000] "GET /admin/ HTTP/ 1.1" 302 0 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36"

我已尝试设置 allowed hosts = "*" 。

这是我在主应用中的 url.py 我尝试使用 namepsace 解决 NoReverseMatch 错误,但它不起作用。

from django.contrib import admin
from django.urls import path,include
from oscarapi.app import application
# from getdetail import *
# app_name = "eshop"
urlpatterns = [

    # path('i18n',django.conf.urls.i18n),
    path('admin/', admin.site.urls),
    # ath('dashboard/', admin.site.urls),
    # path('GET_DET/', include('GET_DETAIL.urls',namespace='GET_DET')),
    # path('PUT_DET/', include('PUT_DET.urls',namespace='PUT_DET')),
    path('GET_DET/', include('GET_DETAIL.urls')),
    path('PUT_DET/', include('PUT_DET.urls')),
    # path('oscarapi/', application.urls),
    path('', application.urls),

]

【问题讨论】:

您的 login.html 页面模板是否有 % url % 某处? 我没有 login.html 页面 显示该特定请求的整个堆栈跟踪 如果没有完整的堆栈跟踪,这是一个无法解开的谜团。您可以尝试输入debug=True & 然后获取错误回溯并将其放在这里。如果这没有给您带来错误,则可能是某些设置依赖于 debug=False,因此您也需要包含该设置。 【参考方案1】:

问题解决了。原来我没有在heroku上设置数据库,只是在本地设置。 所以它在本地工作,但在生产模式下失败了。

【讨论】:

【参考方案2】:

在 settings.py 中设置 ALLOWED_HOSTS=['*'] 对我有用

【讨论】:

debug = true 还是 false? 有 debug = false

以上是关于设置 debug = False 会使 Django 应用程序崩溃并出现以下错误,如何解决?的主要内容,如果未能解决你的问题,请参考以下文章

Djang DJANGO_SETTINGS_MODULE

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

为啥 DEBUG=False 设置使我的 django 静态文件访问失败?

使用 DEBUG 设置为 False 记录 Django SQL 查询

设置 debug=false 实际上会导致渲染速度慢得多?

Django设置 DEBUG=False后静态文件无法加载解决