Hey Serge, Here is a brief description of how status code is set in request response cycle of Django.
*Http404* inherits from *Exception* defined here - https://github.com/django/django/blob/1.4.3/django/http/__init__.py#L132-L133 *get_response() method of django.core.handlers.base.BaseHandler handles Http404 and sets status code here* - https://github.com/django/django/blob/stable/1.4.x/django/core/handlers/base.py#L138-L155 *django.core.handlers.base.BaseHandler* has some code for setting status_code to 403 and 500 as well. I want to make the same but with for a 401 code and a custom redirection > according to the resource to be accessed. There is really simple way to do this. class HttpResponseUnauthorizedRequest(HttpResponse): status_code = 401 You can use this class similar to HttpResponse def protected_view(request): ## handle authorization ## if not authorized then return above response return HttpResponseUnauthorizedRequest("Authorazation is required") There are similar classes for different status code as well - https://github.com/django/django/blob/stable/1.4.x/django/http/__init__.py#L751-L770 Similar implementation by django-tastypie - https://github.com/toastdriven/django-tastypie/blob/master/tastypie/http.py So you have set status code, now what *process_response()* method of *django.middleware.common.CommonMiddleware*checks if status code is 404 and sends an email to admins for broken urls - https://github.com/django/django/blob/stable/1.4.x/django/middleware/common.py#L94-L109 You can see status_code based processing of response in other middlewares as well, e.g. cache, http and csrf. Finally request handlers set status code is response header - 1. django.core.handlers.wsgi.WSGIHandler sets status code in response header - https://github.com/django/django/blob/stable/1.4.x/django/core/handlers/wsgi.py#L245-L253 2. If you are using modpython then status_code in header is set by django.core.handlers.modpython.ModPythonHandler - https://github.com/django/django/blob/stable/1.4.x/django/core/handlers/wsgi.py#L245-L253 This response is served by Webserver. Sincerely, Pankaj Singh http://about.me/psjinx On Mon, Feb 18, 2013 at 6:15 PM, Serge G. Spaolonzi <se...@cobalys.com>wrote: > Hi, > > How does the Http404 exception works internally? > I want to make the same but with for a 401 code and a custom > redirection according to the resource to be accessed. > I have thought about using a middleware to archive this but I am not > sure if it is standard way used by 'django.http.Http404'. > > Thanks > > -- > Serge G. Spaolonzi > Cobalys Systems > http://www.cobalys.com > > -- > You received this message because you are subscribed to the Google Groups > "Django users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to django-users+unsubscr...@googlegroups.com. > To post to this group, send email to django-users@googlegroups.com. > Visit this group at http://groups.google.com/group/django-users?hl=en. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at http://groups.google.com/group/django-users?hl=en. For more options, visit https://groups.google.com/groups/opt_out.