mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	Fixed #29758 -- Documented how to test custom error views.
This commit is contained in:
		@@ -166,3 +166,39 @@ The :func:`~django.views.defaults.bad_request` view is overridden by
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    Use the :setting:`CSRF_FAILURE_VIEW` setting to override the CSRF error
 | 
					    Use the :setting:`CSRF_FAILURE_VIEW` setting to override the CSRF error
 | 
				
			||||||
    view.
 | 
					    view.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Testing custom error views
 | 
				
			||||||
 | 
					--------------------------
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					To test the response of a custom error handler, raise the appropriate exception
 | 
				
			||||||
 | 
					in a test view. For example::
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    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)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user