web-dev-qa-db-ja.com

Django redirectとHttpResponseRedirectの使用の違いは何ですか?

一般的にどちらを使用するのが良いですか?

書くことに利点はありますか?

return redirect(my_url)

以上:

return HttpResponseRedirect(my_url)

それとも直接エイリアスですか?違いはありますか?よりPythonic/Django-nicはどれですか?

55
Williams

2つの間に違いがあります。

HttpResponseRedirectの場合、最初の引数はurlのみです。

redirect which ltimately return HttpResponseRedirect can accept a modelview、or url is as's "to"引数。したがって、「リダイレクト」できる対象が少し柔軟になります。

redirectの方が短いのも気に入っています。したがって、redirectよりもHttpResponseRedirectを使用します。

どちらも使用しても問題ありません。

70

ドキュメントから-

redirect(to[, permanent=False], *args, **kwargs)渡された引数の適切なURLにHttpResponseRedirectを返します。

その定義から同じです。それがショートカットの目的です。どちらも同じです。

ショートカットは通常、実際のAPIの1レベル上に記述されます。したがって、redirectHttpResponseRedirectおよびHttpResponsePermanentRedirectpermanent=Falseの引数でカプセル化します。

HttpResponseRedirectよりもredirectを使用することに大きな欠点はありません。これで問題が解決することを願っています。

7