Djangoでログアウトした後にリダイレクトする場所を構成するにはどうすればよいですか?


88

ログアウト後にリダイレクトするURLをどこに設定できるのか疑問に思っています。ログインURLを設定できると思います。ホームページにリダイレクトしたい。

回答:


156

Modern Django(2017+?)には、と呼ばれる設定がありますLOGOUT_REDIRECT_URL

古いジャンゴ/元の回答

何も上書きしたり折り返したりする必要はありません。

ドキュメントによると、next_pageログアウトビューに引数を指定するだけです。 https://docs.djangoproject.com/en/dev/topics/auth/default/#django.contrib.auth.views.logout

(r'^logout/$', 'django.contrib.auth.views.logout',
                          {'next_page': '/successfully_logged_out/'})

5
すべての認証URLの汎用インポートを実行した場合、これは機能しません。以下の@YeRuizhiの回答を使いやすく
RunLoop 2015年

@RunLoop私はこの他の方法を承認します。唯一の問題は、上記のリンクを作成するたびにそれを使用することを忘れないでください。したがって、これが標準ビルドで機能する場合は、より信頼性が高くなります。そうでない場合は、次に簡単な解決策が理にかなっています。
ゆうじ「冨田」富田

このURLをビューから逆にする方法を理解することはできません。
流星

これは素晴らしいソリューションです。ログインページに戻します。この行からシステムメッセージを追加する方法もありますか?ポップアップを作成するために?「正常にログアウトしました」
arcee123 2015年

'次のページ' URLの先頭にあるスラッシュ: '/ successfully_logged_out /'は不可欠です。スラッシュがないと、Djangoは "logout" URLを "successfully_logged_out" URLと連結しようとします。これにより、新しい 'illegal'URLが作成されます。ユーザーがログアウトした後にログインページを表示したい場合は、生活が少し難しくなります。
リッカ2016年

60

1つの簡単な方法:

ログアウトリクエストのURLに「next」パラメータを追加します。例えば:

<a href="{% url 'auth_logout' %}?next=/path_to_the_page"> Logout</a>

次に、ログアウトビューがあなたのためにトリックを行います。

ログイン後リダイレクトの場合は、settings.pyで設定するだけです。

LOGIN_REDIRECT_URL = '/path_to_the_page'
LOGIN_URL = '/path_to_the_page'

35
LOGOUT_REDIRECT_URLプロパティだけではないのは不思議です。
ロブ・グラント


16
2017年があり、LOGOUT_REDIRECT_URLは実際に機能しています:)
m.antkowicz

いい答えだ。これを私の中に貼り付けるbase.htmlそれを忘れます。:D(Debian Jessie:SでビンテージのDjangoを使用しているため、新しい設定は利用できません。)
underscore_d


13

settings.pyファイルのLOGOUT_REDIRECT_URLを使用して、ユーザーをどこにでもリダイレクトできます。

LOGOUT_REDIRECT_URL = 'url name to redirect'

9

現在のページにリダイレクト

<a href="{% url 'logout' %}?next={{ request.path | urlencode }}">{% trans "Logout" %}</a>

Django1.9でテスト済み。

参照:Djangoの{%url%}テンプレートタグを介してクエリパラメータを渡すことは可能ですか?


1
ありがとうございます。これは、LOGOUT_REDIRECT_URLが機能しなかった場合に役立ちました(テスト環境と本番環境で異なるパスがあります)。
DmytroGierman19年


3

ドキュメントから、「次の」ページを上書きする独自のログアウトビュー(単純なラッパーにすることもできます)を作成できます。


3

次のパラメータに名前付きURLを使用することもできます。

<a href="{% url 'auth_logout' %}?next={% url 'homepage' %}"> Logout</a>

3

クライアントレベルでリダイレクトURLを設定する場合は、urls.py:で行うことができます。

(r'^management/logout/$', 'django.contrib.auth.views.logout'),

そして、テンプレートで:

<a href="{% url 'django.contrib.auth.views.logout' %}?next=/">
    Log out
</a>

ここでnext、正しいURLをポイントします。


1

独自のURLを定義し(インポートされた汎用認証URLではなく)、標準のdjango認証ビューを使用している場合は、パスに(template_name = 'example.html')を追加するだけです。

path('logout/',auth_views.LogoutView.as_view(template_name='homepage.html'),name="logout")


0

これをプロジェクトsetting.pyファイルに追加します LOGOUT_REDIRECT_URL = '/'

あなたは間にあなたのURLを書くことができます ''私はログアウトのデフォルトリダイレクトのために私のインデックスページを使用します

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.