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)
新的应用已预先配置为接受迁移,因此你可以在进行一些更改后通过运行 makemigrations 添加迁移。如果你的应用已经具有模型和...
假设您希望在您的网站上创建一张简易的表单,用来获取用户的名字。您需要在模板中使用类似代码:form action="/your-name/" meth...
当用户创建了新会话,会话数据会累积在会话存储中。如果你正在使用数据库后端,django_session 数据库表会增加。如果你使用...
MyBatis-Plus 条件构造器-AbstractWrappergt(R column, Object val)gt(boolean condition, R column, Object val)大于例:gt("a...
Spring教程 -Spring内部Bean注入以下部分显示如何使用Spring内部bean。内在Java豆在下面我们有Customer Bean。 在客户对象中我们...