Ответ 1
Вы можете просто переопределить HttpResponse, как и другие ответы:
class HttpResponseSeeOther(HttpResponseRedirect):
status_code = 303
return HttpResponseSeeOther('/other-url/')
Последние пару дней мы обсуждали в еще один вопрос, чтобы лучше управлять случайностью в RESTful пути; сегодня я немного поиграл с некоторыми идеями в Django, но обнаружил, что нет простого стандартного способа возвращения ответа 303 (а не 300 одного, кстати), то есть, похоже, нет HttpResponseSeeOther внутри django.HTTP или в другом месте.
Знаете ли вы какие-либо средства для достижения этого?
Вы можете просто переопределить HttpResponse, как и другие ответы:
class HttpResponseSeeOther(HttpResponseRedirect):
status_code = 303
return HttpResponseSeeOther('/other-url/')
Общий объект HttpResponse позволяет указать любой код состояния, который вы хотите:
response = HttpResponse(content="", status=303)
response["Location"] = "http://example.com/redirect/here/"
Если вам нужно что-то повторно используемое, тогда ответ Джеральда определенно действителен; просто создайте свой собственный класс HttpResponseSeeOther. Django предоставляет только эти определенные классы для нескольких наиболее распространенных кодов состояния.