访问未设置的URL时,我想移至404页面。 我们正在尝试在多个应用程序中实现它。 我尝试了几次,但不能。
哪里是编写代码的最佳方法?
#setting
DEBUG = False
ALLOWED_HOSTS = ['127.0.0.1']
#project url.py
from django.conf import settings
from django.urls import re_path
from django.views.static import serve
# ... the rest of your URLconf goes here ...
if settings.DEBUG:
urlpatterns += [
re_path(r'^media/(?P<path>.*)$', serve, {
'document_root': settings.MEDIA_ROOT,
}),
]
handler404 = 'person.views.handler404'
handler500 = 'person.views.handler500'
#application view.py
def handler404(request):
response = render_to_response('404.html', {},
context_instance=RequestContext(request))
response.status_code = 404
return response
def handler500(request):
response = render_to_response('500.html', {},
context_instance=RequestContext(request))
response.status_code = 500
return response
答案 0 :(得分:0)
不要使用render_to_response
,它已经过时了。请改用render
。
def handler404(request):
response = render(request, '404.html', status_code=404)
如果您的教程或书告诉您编写此代码,那么它已经过时了,您应该寻找其他资源来学习Django。
在您的情况下,处理程序没有执行与常规处理程序不同的任何操作。因此,您应该取消设置handler404
和handler500
。只要默认处理程序位于模板目录中,它们就会使用您自定义的404.html
和500.html
模板。