举报投诉联系我们 手机版 热门标签 编程学
您的位置:编程学 > django 视 Django4.0 编写视-自定义报错视

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

2023-06-08 13:18 Django4中文教程

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

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

django 视

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)


阅读全文
以上是编程学为你收集整理的django 视 Django4.0 编写视-自定义报错视全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 编程学 bianchengxue.com 版权所有 联系我们
桂ICP备19012293号-7 返回底部