Quel est-il préférable d'utiliser en général?
https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#redirect
https://docs.djangoproject.com/en/dev/ref/request-response/#Django.http.HttpResponseRedirect
Y a-t-il un avantage à écrire:
return redirect(my_url)
plus de:
return HttpResponseRedirect(my_url)
Ou est-ce un alias direct? Y a-t-il une différence? Quel est le plus Pythonic/Django-nic?
Il y a une différence entre les deux:
Dans le cas de HttpResponseRedirect
, le premier argument ne peut être qu'un url
.
redirect
qui finalement renverra un HttpResponseRedirect
peut accepter un model
, view
ou url
tel qu'il est argument "à". Il est donc un peu plus flexible dans ce qu'il peut "rediriger" vers.
J'aime aussi la façon dont redirect
est plus court. J'utiliserais donc redirect
sur HttpResponseRedirect
.
Les deux sont très bien à utiliser cependant.
De la documentation -
redirect(to[, permanent=False], *args, **kwargs)
Renvoie unHttpResponseRedirect
à l'URL appropriée pour les arguments passés.
de la définition c'est la même chose. C'est à cela que servent les raccourcis. Les deux sont une seule et même chose.
les raccourcis sont généralement écrits un niveau au-dessus des API réelles. Donc redirect
encapsule HttpResponseRedirect
et HttpResponsePermanentRedirect
avec l'arg permanent=False
.
Il n'y a pas d'inconvénient majeur à utiliser HttpResponseRedirect
sur redirect
. J'espère que cela le clarifie.