Reputation: 2431
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?
Upvotes: 21
Views: 7323
Reputation: 32793
You could just override HttpResponse, like the other Responses do:
class HttpResponseSeeOther(HttpResponseRedirect):
status_code = 303
return HttpResponseSeeOther('/other-url/')
Upvotes: 32
Reputation: 3186
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.
Upvotes: 21