Какая разница между использованием перенаправления Django и HttpResponseRedirect?
Что лучше использовать в целом?
Есть ли какие-либо преимущества для написания:
return redirect(my_url)
над
return HttpResponseRedirect(my_url)
Или это прямой псевдоним? Есть ли разница? Что больше pythonic/django-nic?
Ответы
Ответ 1
Существует разница между двумя:
В случае HttpResponseRedirect
первый аргумент может быть только url
.
redirect
, который в конечном итоге вернет a HttpResponseRedirect
, может принять model
, view
или url
как аргумент "to". Таким образом, он немного более гибкий в том, что он может "перенаправить".
Мне также нравится, как redirect
короче. Поэтому я бы использовал redirect
над HttpResponseRedirect
.
Оба хороши в использовании.
Ответ 2
Из документации -
redirect(to[, permanent=False], *args, **kwargs)
Возвращает HttpResponseRedirect
к соответствующему URL для переданных аргументов.
из определения оно то же самое. Для чего нужны ярлыки. Оба являются одним и тем же.
ярлыки обычно пишутся на один уровень выше фактического API. Итак redirect
инкапсулирует HttpResponseRedirect
и HttpResponsePermanentRedirect
аргументом arg permanent=False
.
Недопустимо использование HttpResponseRedirect
над redirect
. Надеюсь, это очистит его.