【问题标题】:Django Internal Server Error instead of 404Django 内部服务器错误而不是 404
【发布时间】:2014-08-02 16:29:03
【问题描述】:

我正在使用 Django 1.6、uwsgi 和 nginx,应用程序运行正常,但我收到 500 错误,并且我尝试访问的每个无效 URL 都收到下面的电子邮件,而不是 404 错误。

我为http://my_project_url.com/whatever 甚至http://my_project_url.com/favicon.ico 得到这个

我查看了 URL,但没有匹配此模式的正则表达式。

这是来自电子邮件的回溯:

Traceback (most recent call last):

  File "/project/virtenv/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 152, in get_response
    response = callback(request, **param_dict)

  File "/project/virtenv/local/lib/python2.7/site-packages/django/utils/decorators.py", line 99, in _wrapped_view
    response = view_func(request, *args, **kwargs)

  File "/project/virtenv/local/lib/python2.7/site-packages/django/views/defaults.py", line 30, in page_not_found
    body = template.render(RequestContext(request, {'request_path': request.path}))

  File "/project/virtenv/local/lib/python2.7/site-packages/debug_toolbar/panels/templates/panel.py", line 55, in _request_context__init__
    context = processor(request)

  File "./project/context_processors.py", line 88, in app_delegate
    app_name = resolve(request.path).app_name

  File "/project/virtenv/local/lib/python2.7/site-packages/django/core/urlresolvers.py", line 453, in resolve
    return get_resolver(urlconf).resolve(path)

  File "/project/virtenv/local/lib/python2.7/site-packages/django/core/urlresolvers.py", line 333, in resolve
    raise Resolver404({'tried': tried, 'path': new_path})

Resolver404: {u'path': u'favicon.ico', u'tried': [[<RegexURLResolver <module 'custom_

如果我尝试从我做raise Http404 的应用程序访问 URL,那很好,我会看到常规的 nginx 错误页面。

【问题讨论】:

    标签: python django nginx uwsgi


    【解决方案1】:

    似乎您有一个自定义处理器试图解析路径

    File "./project/context_processors.py", line 88, in app_delegate
      app_name = resolve(request.path).app_name
    

    引用 django resolve() docs:

    如果 URL 未解析,该函数会引发 Resolver404 异常(Http404 的子类)。

    我建议你管理自定义处理器中的异常代码看起来像这样:

    try:
        resolve_result = resolve(request.path)
        app_name = resolve_result.app_name
        ... your code ....
    except Resolver404:
        pass
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-06
      • 2019-07-10
      • 1970-01-01
      • 2021-11-29
      • 2020-09-12
      • 1970-01-01
      • 2023-03-25
      • 2011-03-18
      相关资源
      最近更新 更多