如何在 django 中自定义找不到页面(404)?

Posted

技术标签:

【中文标题】如何在 django 中自定义找不到页面(404)?【英文标题】:How to customize Page not found (404) in django? 【发布时间】:2013-03-02 15:19:54 【问题描述】:

我如何在 Django 中自定义错误页面以及我将我的 html 放在哪里。

【问题讨论】:

见***.com/a/1167480/893780 【参考方案1】:

只需在项目的根级templates 目录中创建一个404.html 文件。

【讨论】:

【参考方案2】:

首先您需要编辑 settings.py 以指向模板文件夹: Django template Path

将 404.htm 放入模板文件夹后,您可以按照以下说明进行操作:

通知搜索引擎当前页面是 404 很重要。您可以通过更改 http 标头来做到这一点。所以这是一个很好的方法:

在你的应用程序的 urls.py 中添加:

# Imports
from django.conf.urls.static import static
from django.conf.urls import handler404
from django.conf.urls import patterns, include, url
from yourapplication import views

##
# Handles the URLS calls
urlpatterns = patterns('',
    # url(r'^$', include('app.homepage.urls')),
)

handler404 = views.error404

进入你的应用的views.py添加:

# Imports
from django.shortcuts import render
from django.http import HttpResponse
from django.template import Context, loader


##
# Handle 404 Errors
# @param request WSGIRequest list with all HTTP Request
def error404(request):

    # 1. Load models for this view
    #from idgsupply.models import My404Method

    # 2. Generate Content for this view
    template = loader.get_template('404.htm')
    context = Context(
        'message': 'All: %s' % request,
        )

    # 3. Return Template for this view + Data
    return HttpResponse(content=template.render(context), content_type='text/html; charset=utf-8', status=404)

秘密在最后一行:status=404

希望对您有所帮助!

我期待看到社区对这种方法的投入。 =)

【讨论】:

以上是关于如何在 django 中自定义找不到页面(404)?的主要内容,如果未能解决你的问题,请参考以下文章

根据值在 Admin 中自定义 Django 表单字段

Django:找不到页面(404)

使用 Django,当我尝试访问应该存在的页面时,为啥找不到 404 错误页面?

你好。我在更改 django 项目中显示找不到页面的页面时遇到问题(404)

Django 1.9.0:找不到页面 404 Django 媒体文件

使用 Django + react-router 找不到 404 页面