Django中的404页面的网址

时间:2015-04-28 18:00:43

标签: python django http-status-code-404

如果我提供了错误的网址,那么我想重定向到404.html页面。在我的view.py中,我有以下功能 -

from django.shortcuts import render_to_response
from django.template import RequestContext, loader
from django.core.urlresolvers import reverse
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse, HttpResponseRedirect
from misc.models import *
from meta.views import Meta
from login.helper import *
from django.contrib import messages

def my_custom_404_view(request):
return render(request, "404.html", {
"areas": Area.objects.all(),
"jobs": Jobs.objects.filter(active=True),
})

我的模板和我的网址文件中有404 html页面,我有以下

handler404 = 'pages.views.my_custom_404_view'

但是当我输入任何错误的网址时它不起作用。它给了我 - 找不到页(404) 请求方法:GET 请求网址:http://127.0.0.1:8000/ko 我做错了什么?请建议。

2 个答案:

答案 0 :(得分:2)

没有必要像往常一样以reg表达方式指定404的url,只需按照下面给出的内容进行操作即可。 首先,需要在templates文件夹(settings.py中指定的模板目录)中有404消息模板。 在项目文件夹的urls.py中添加此帐户(它可以是任何应用程序)是同一项目的应用程序:

<强>项目/ urls.py

handler404 = 'accounts.views.page_not_found'

在帐户视图中添加以下内容:

帐户/ views.py

def page_not_found(request):    
     """
       Page not found Error 404
     """
     response = render_to_response('404.html',context_instance=RequestContext(request))
     response.status_code = 404
     return response

不要忘记进行必要的进口。另外,在测试分段时,不要忘记在settings.py中更改Debug = False。

答案 1 :(得分:1)

那是因为你处于DEBUG模式。在您的设置中将DEBUG设置为False,看看它是否有效。

修改 根据此link,您需要采取更多步骤:

第1步:创建一个包含错误消息的404.html文件。

第2步:将404.html放在TEMPLATE_DIRS

指向的目录中

第3步:在urls.py设置handler404 = 'app.views.custom_404'。这将是一个自定义视图,当发生Http 404错误时,它将返回404.html页面。

步骤4:在views.py中创建自定义视图:

def custom_404(request):
    return render_to_response('404.html')

第5步:在settings.pyALLOWED_HOSTS = ['hostname']中,这将是您运行django项目的IP地址(可以是localhost)。

第6步:非常重要,在settings.py中,制作DEBUG=False,只有这样您才能看到自定义错误页面。