Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to produce a 303 Http Response in Django?

Last couple of days we were discussing at another question the best to manage randomness in a RESTful way; today I went to play a little bit with some ideas in Django only to find that there is no easy standard way of returning a 303 response (nor a 300 one, btw), that is, there doesn't seem to exist an HttpResponseSeeOther inside django.HTTP or in another place.

Do you know any means for achieving this?

like image 558
AticusFinch Avatar asked Jan 03 '09 03:01

AticusFinch


2 Answers

You could just override HttpResponse, like the other Responses do:

class HttpResponseSeeOther(HttpResponseRedirect):
    status_code = 303

return HttpResponseSeeOther('/other-url/')
like image 116
gak Avatar answered Oct 10 '22 01:10

gak


The generic HttpResponse object lets you specify any status code you want:

response = HttpResponse(content="", status=303)
response["Location"] = "http://example.com/redirect/here/"

If you need something re-usable then Gerald's answer is definitely valid; simply create your own HttpResponseSeeOther class. Django only provides these specific classes for a few of the most common status codes.

like image 35
nezroy Avatar answered Oct 10 '22 03:10

nezroy