如果在 django 的 urls.py 中找不到,则将任何 url 重定向到 404.html

Redirect any urls to 404.html if not found in urls.py in django

如果 urls.py 中不存在任何类型的 url 模式,我如何将其重定向到创建的页面“404.html”页面而不是被显示错误姜戈。

创建一个视图来呈现您创建的 404.html 并将其设置为 urls.py 中的 handler404。

handler404 = 'app.views.404_view'

如果启用调试,Django 将呈现调试视图。否则,如果它不存在,它将按照 handler404 中指定的方式为所有类型的页面呈现 404 页面。

关于 Customizing error views 的 Django 文档。

查看 this 答案以获得完整示例。

在您的 views.py 中,只需添加以下代码(无需在 urls.py 中更改任何内容)。

from django.shortcuts import render_to_response
from django.template import RequestContext


def handler404(request):
    response = render_to_response('404.html', {},
                              context_instance=RequestContext(request))
    response.status_code = 404
    return response

将自定义 404.html 放入模板目录。

source : click here

转到您的项目 settings.py 并将 DEBUG = True 设置为 DEBUG = False 然后 Django 将所有未设置的模式重定向到未找到。

此外,如果您想自定义 404 模板,请在您的项目中 urls.py

设置

handler404 = 'app.views.404_view'

那么在你的项目中view.py

from django.shortcuts import render_to_response
from django.template import RequestContext

def handler404(request):
    response = render_to_response('404.html', {},
                                  context_instance=RequestContext(request))
    response.status_code = 404
    return response

最后,在您的 templates 中添加 404.html 并填写您想要向最终用户显示的内容。

您的 viewurl 中无需更改任何内容。 只需执行这 2 个步骤,在您的 settings.py 中执行以下操作

DEBUG = False
ALLOWED_HOSTS = ["*"]

然后在您的应用程序目录(本例中为 myapp)中,创建 myapp/templates/404.html,其中 404.html 是您的自定义错误页面。就是这样。