Подтвердить что ты не робот

Какая разница между использованием перенаправления Django и HttpResponseRedirect?

Что лучше использовать в целом?

Есть ли какие-либо преимущества для написания:

return redirect(my_url)

над

return HttpResponseRedirect(my_url)

Или это прямой псевдоним? Есть ли разница? Что больше pythonic/django-nic?

4b9b3361

Ответ 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. Надеюсь, это очистит его.