mirror of
https://github.com/django/django.git
synced 2025-11-07 07:15:35 +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:
@@ -154,12 +154,22 @@ class BaseHandler(object):
|
||||
finally:
|
||||
receivers = signals.got_request_exception.send(sender=self.__class__, request=request)
|
||||
except exceptions.PermissionDenied:
|
||||
logger.warning('Forbidden (Permission denied): %s' % request.path,
|
||||
extra={
|
||||
'status_code': 403,
|
||||
'request': request
|
||||
})
|
||||
response = http.HttpResponseForbidden('<h1>Permission denied</h1>')
|
||||
logger.warning(
|
||||
'Forbidden (Permission denied): %s' % request.path,
|
||||
extra={
|
||||
'status_code': 403,
|
||||
'request': request
|
||||
})
|
||||
try:
|
||||
callback, param_dict = resolver.resolve403()
|
||||
response = callback(request, **param_dict)
|
||||
except:
|
||||
try:
|
||||
response = self.handle_uncaught_exception(request,
|
||||
resolver, sys.exc_info())
|
||||
finally:
|
||||
receivers = signals.got_request_exception.send(
|
||||
sender=self.__class__, request=request)
|
||||
except SystemExit:
|
||||
# Allow sys.exit() to actually exit. See tickets #1023 and #4701
|
||||
raise
|
||||
|
||||
@@ -331,6 +331,9 @@ class RegexURLResolver(LocaleRegexProvider):
|
||||
callback = getattr(defaults, 'handler%s' % view_type)
|
||||
return get_callable(callback), {}
|
||||
|
||||
def resolve403(self):
|
||||
return self._resolve_special('403')
|
||||
|
||||
def resolve404(self):
|
||||
return self._resolve_special('404')
|
||||
|
||||
|
||||
Reference in New Issue
Block a user