codecamp

Django4.0 编写视图-自定义报错视图

Django 中的默认错误视图应该足以满足大多数 Web 应用程序,但如果您需要任何自定义行为,可以轻松覆盖。 在您的 URLconf 中指定如下所示的处理程序(在其他任何地方设置它们将无效)。

可以用 ​handler404​: 覆盖 ​page_not_found()​ 视图:

handler404 = 'mysite.views.my_custom_page_not_found_view'

可以用 ​handler500​: 覆盖 ​server_error()​ 视图:

handler500 = 'mysite.views.my_custom_error_view'

可以用 ​handler403​: 覆盖 ​permission_denied()​ 视图:

handler403 = 'mysite.views.my_custom_permission_denied_view'

可以用 ​handler400​: 覆盖 ​bad_request()​ 视图:

handler400 = 'mysite.views.my_custom_bad_request_view'

测试自定义报错视图

为了测试自定义报错处理的响应,可以适当地在测试视图里引发异常。例如:

from django.core.exceptions import PermissionDenied
from django.http import HttpResponse
from django.test import SimpleTestCase, override_settings
from django.urls import path


def response_error_handler(request, exception=None):
    return HttpResponse('Error handler content', status=403)


def permission_denied_view(request):
    raise PermissionDenied


urlpatterns = [
    path('403/', permission_denied_view),
]

handler403 = response_error_handler


# ROOT_URLCONF must specify the module that contains handler403 = ...
@override_settings(ROOT_URLCONF=__name__)
class CustomErrorHandlerTests(SimpleTestCase):

    def test_handler_renders_template_response(self):
        response = self.client.get('/403/')
        # Make assertions on the response here. For example:
        self.assertContains(response, 'Error handler content', status_code=403)


Django4.0 编写视图-返回错误信息
Django4.0 编写视图-异步视图
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

Django4.0 模型和数据库

Django4.0 处理HTTP请求

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }