【问题标题】:Create 404 with Django 1.4使用 Django 1.4 创建 404
【发布时间】:2012-11-13 03:36:17
【问题描述】:

如果project_name/urls.py 中没有正确的条目,我想显示 404 错误。

我阅读了Writing your first Django app,但我不明白如何创建一般错误 - 不仅适用于应用程序。

所以我尝试了这个:

  1. TEMPLATE_DIRS = /var/www/first/templates
  2. 回显“404 错误”> /var/www/first/templates/404.html
  3. /var/www/first/urls.py:

    from django.http import Http404
    try: 
        ...
        url(r'^admin/', include(admin.site.urls)),
        ... 
    except: 
        raise Http404
    

毕竟,如果我调用未知的 url,我仍然会收到 500 错误。

【问题讨论】:

  • 默认的 django 行为是为未知 url 显示 404。如果你有DEBUG = True,它会显示一个调试视图,但它仍然表明你正在查看一个 404 页面。您不需要在您的网址中提出Http404,它是在框架级别处理的
  • 你的 url 中有 handler404 和相关的视图吗? https://docs.djangoproject.com/en/dev/topics/http/views/#django.http.Http404
  • hm,如果我设置 DEBUG = True´ it shows me an 404. If DEBUG = False´ 我得到 500(内部错误)。
  • 您应该从 urls.py 文件中明确删除 try except 语句。可能是500错误的原因。无论如何,Django 应该向您的电子邮件地址(在管理员设置中)报告所有 500 错误,并提供回溯和错误的确切原因。
  • 我在DEBUG = True 遇到了同样的问题,请参阅stackoverflow.com/q/7946180/352796

标签: django


【解决方案1】:

Django 使用 urls.py 文件按顺序评估所有 url 模式。如果您希望它在评估所有正则表达式模式但未找到匹配项后转到某个页面,只需在 urlpatterns 元组的最后一项添加类似这样的内容:

url('', views.defaultview),

defaultview 可能是那个 404 页面。

django.views.defaults.page_not_found 是一个内置的 django 视图,可以渲染 templates/404.html 中的任何内容。

【讨论】:

  • 我试过url('', views.defaultview), 但这只有在我没有任何路径访问我的页面时才有效。如果我尝试打开mysite.tld,它会显示定义的视图(404),但如果我打开mysite.tld/fsdfk,我会再次获得500。
【解决方案2】:

它适用于/var/www/first/urls.py中的关注

from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
...,
url(r'^admin/', include(admin.site.urls)),
...,
)

【讨论】:

    猜你喜欢
    • 2012-11-08
    • 2012-05-28
    • 2012-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-13
    • 1970-01-01
    相关资源
    最近更新 更多