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

时间:2013-03-14 10:19:28

标签: python html django templates

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

2 个答案:

答案 0 :(得分:9)

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

答案 1 :(得分:2)

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

在模板文件夹中有404.htm后,您可以按照以下说明操作:

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

进入你的应用程序的urls.py add:

# 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 add:

# 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

希望它有所帮助!

我期待社区对此方法的投入。 =)