¿Cómo producir una respuesta Http 303 en Django?
Pregunta
El último par de días que estuvimos discutiendo en otra pregunta la mejor para administrar la aleatoriedad de una manera REST. hoy fui a jugar un poco con algunas ideas en Django solo para encontrar que no hay una manera estándar fácil de devolver una respuesta 303 (ni una 300 uno, por cierto), es decir, no parece existir un HttpResponseSeeOther adentro django.HTTP o en otro lugar.
¿Conoces algún medio para lograr esto?
Solución
Puede anular HttpResponse, como hacen las otras Respuestas:
class HttpResponseSeeOther(HttpResponseRedirect):
status_code = 303
return HttpResponseSeeOther('/other-url/')
Otros consejos
El objeto HttpResponse genérico le permite especificar cualquier código de estado que desee:
response = HttpResponse(content="", status=303)
response["Location"] = "http://example.com/redirect/here/"
Si necesita algo reutilizable, la respuesta de Gerald es definitivamente válida; simplemente crea tu propia clase HttpResponseSeeOther. Django solo proporciona estas clases específicas para algunos de los códigos de estado más comunes.