如果我提供了错误的网址,那么我想重定向到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 我做错了什么?请建议。
答案 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.py
,ALLOWED_HOSTS = ['hostname']
中,这将是您运行django项目的IP地址(可以是localhost
)。
第6步:非常重要,在settings.py
中,制作DEBUG=False
,只有这样您才能看到自定义错误页面。