mirror of
https://github.com/django/django.git
synced 2025-11-03 21:25:09 +00:00
Fixed #9847 -- Added 403 response handler. Many thanks to kgrandis, adamnelson, vkryachko, fvox13 and Chris Beaven.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@16606 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
958e049d4d
commit
1ca6e9b9e2
10 changed files with 103 additions and 12 deletions
|
|
@ -6,6 +6,8 @@ import sys
|
|||
from django.conf import settings
|
||||
from django.core.files.uploadedfile import SimpleUploadedFile
|
||||
from django.test import TestCase, RequestFactory
|
||||
from django.test.utils import (setup_test_template_loader,
|
||||
restore_template_loaders)
|
||||
from django.core.urlresolvers import reverse
|
||||
from django.template import TemplateSyntaxError
|
||||
from django.views.debug import ExceptionReporter
|
||||
|
|
@ -40,6 +42,26 @@ class DebugViewTests(TestCase):
|
|||
self.assertTrue('file_data.txt' in response.content)
|
||||
self.assertFalse('haha' in response.content)
|
||||
|
||||
def test_403(self):
|
||||
# Ensure no 403.html template exists to test the default case.
|
||||
setup_test_template_loader({})
|
||||
try:
|
||||
response = self.client.get('/views/raises403/')
|
||||
self.assertContains(response, '<h1>403 Forbidden</h1>', status_code=403)
|
||||
finally:
|
||||
restore_template_loaders()
|
||||
|
||||
def test_403_template(self):
|
||||
# Set up a test 403.html template.
|
||||
setup_test_template_loader(
|
||||
{'403.html': 'This is a test template for a 403 Forbidden error.'}
|
||||
)
|
||||
try:
|
||||
response = self.client.get('/views/raises403/')
|
||||
self.assertContains(response, 'test template', status_code=403)
|
||||
finally:
|
||||
restore_template_loaders()
|
||||
|
||||
def test_404(self):
|
||||
response = self.client.get('/views/raises404/')
|
||||
self.assertEqual(response.status_code, 404)
|
||||
|
|
|
|||
|
|
@ -39,8 +39,9 @@ urlpatterns = patterns('',
|
|||
(r'^server_error/', 'django.views.defaults.server_error'),
|
||||
|
||||
# a view that raises an exception for the debug view
|
||||
(r'^raises/$', views.raises),
|
||||
(r'^raises404/$', views.raises404),
|
||||
(r'raises/$', views.raises),
|
||||
(r'raises404/$', views.raises404),
|
||||
(r'raises403/$', views.raises403),
|
||||
|
||||
# i18n views
|
||||
(r'^i18n/', include('django.conf.urls.i18n')),
|
||||
|
|
|
|||
|
|
@ -1,8 +1,9 @@
|
|||
import sys
|
||||
|
||||
from django import forms
|
||||
from django.http import HttpResponse, HttpResponseRedirect
|
||||
from django.core.exceptions import PermissionDenied
|
||||
from django.core.urlresolvers import get_resolver
|
||||
from django.http import HttpResponse, HttpResponseRedirect
|
||||
from django.shortcuts import render_to_response, render
|
||||
from django.template import Context, RequestContext, TemplateDoesNotExist
|
||||
from django.views.debug import technical_500_response, SafeExceptionReporterFilter
|
||||
|
|
@ -53,6 +54,9 @@ def raises404(request):
|
|||
resolver = get_resolver(None)
|
||||
resolver.resolve('')
|
||||
|
||||
def raises403(request):
|
||||
raise PermissionDenied
|
||||
|
||||
def redirect(request):
|
||||
"""
|
||||
Forces an HTTP redirect.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue