10

ここのドキュメントにアクセスすればわかりました: https://docs.djangoproject.com/en/dev/topics/http/shortcuts/

下にスクロールして、redirect() の最後の例を見てください。「デフォルトでは、redirect() は一時的なリダイレクトを返します。上記のフォームはすべて永続的な引数を受け入れます。True に設定すると、永続的なリダイレクトが返されます:」

では、一時的なリダイレクトと永続的なリダイレクトの違いは何ですか? ユーザーがログインして認証されたときに、ログインしたページにリダイレクトするように使用しています。代わりに HttpResponseRedirect() を使用する必要がありますか? HttpResponseRedirect() の代わりに redirect() を使用するメリットはありますか?

4

2 に答える 2

11

ブランドンの投稿に、あなたの質問に関するメモを追加するだけで、両者の違いは何ですか。一時的なリダイレクトと永続的なリダイレクトの主な違いは、第三者がそれをどのように見るかです。Google が恒久的なリダイレクトを確認した場合、おそらく古いサイトはなくなったと考え、すべてのヒットを更新して新しい URL に直接アクセスするようにします。一時的なリダイレクトはスパマーによってよく使用されるため、Google は永続的なリダイレクトを好むと言う人もいます。

一時的なリダイレクトの例としては、ダウンロード ミラー/静的ファイル サーバーにリンクする自分のサイトの URL の内部書き換えなどがあります。この場合、リダイレクト先のサイトはおそらく同じままですが、他のサーバー アドレスは変更される可能性があります (たとえば、静的コンテンツを最も安価な場所でホストします)。永続的なリダイレクトを使用すると、問題が発生する可能性があります (携帯電話のポッドキャスト プレーヤーは、そのようなリダイレクトを記憶しており、静的ファイル サーバーを移動したときにそれを認識しません)。

于 2015-03-17T21:32:08.633 に答える
8

301 パーマネント リダイレクトを返す方法は 2 つあります。

from django.shortcuts import redirect

def my_view(request):
    # some code here
    return redirect('/some/url/', permanent=True)

https://docs.djangoproject.com/en/1.5/topics/http/shortcuts/#redirect

また:

from django.http import HttpResponsePermanentRedirect

    def my_view(request):
        # some code here
        return HttpResponsePermanentRedirect('/some/url')

https://docs.djangoproject.com/en/1.5/ref/request-response/#django.http.HttpResponsePermanentRedirect

于 2013-09-29T01:30:33.713 に答える