我不明白Django的404显示

时间:2019-08-31 15:46:03

标签: django

访问未设置的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

1 个答案:

答案 0 :(得分:0)

不要使用render_to_response,它已经过时了。请改用render

def handler404(request):
    response = render(request, '404.html', status_code=404)

如果您的教程或书告诉您编写此代码,那么它已经过时了,您应该寻找其他资源来学习Django。

在您的情况下,处理程序没有执行与常规处理程序不同的任何操作。因此,您应该取消设置handler404handler500。只要默认处理程序位于模板目录中,它们就会使用您自定义的404.html500.html模板。