web-dev-qa-db-ja.com

djangoログアウトすると、管理ページにリダイレクトされます

簡単なログイン機能を提供しました。ログアウトは内蔵のものを使ってみました。これは私のurls.pyです:

(r'', include('Django.contrib.auth.urls')),

そして、これは私のテンプレートファイルです:

{% if user.is_authenticated %}
logged in as {{ user }}
(<a href="{% url "logout" %}">logout</a>)
{% else %}

デフォルトのDjango管理サイトも有効にしました。 logoutをクリックすると、管理ログアウトビューが表示されます。ログアウトの次のページ属性を渡して、どのビューをレンダリングするかをDjangoに伝えるにはどうすればよいですか?

34
ducin

独自のログアウトページ(your_application/templates/registration/logged_out.html)ではなく、Django管理サイトのログアウトページが表示されている場合は、プロジェクトのINSTALLED_APPS設定を確認して、 Django.contrib.adminが 'your_application'の後に来ることを確認してください。両方のテンプレートは同じ相対パスにあり、Djangoテンプレートローダーは最初に見つけたものを使用します。

56
Gautham Nookala

Django 1.6:でテスト済み

これを私のurls.pyに追加します。

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

そしてそれを使いました:

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

next引数では、正しいURLを指定します。

Django 2.1でテスト済み

urls.pyurlpatternsに追加:

from Django.contrib.auth import views as auth_views

urlpatterns = [
    path('logout/', auth_views.LogoutView.as_view(), name='logout'),
]

そしてそれをテンプレートで使用します:

<a href="{% url "logout" %}?next=/">logout</a>

詳細は here で確認できます。

16
Menda

ドキュメントによると、ログアウトビューにnext_pageパラメータを指定できます。 https://docs.djangoproject.com/en/dev/topics/auth/#Django.contrib.auth.views.logout

(r'^logout/$', 'Django.contrib.auth.views.logout',
    {'next_page': '/logged_out/'})
10
catherine

これはすべてマニュアルでかなりよく説明されていますが、あなたが理解していない特定のものはありますか?

https://docs.djangoproject.com/en/dev/topics/auth/default/#how-to-log-a-user-out

from Django.contrib.auth import logout

def logout_view(request):
    logout(request)
    # Redirect to a success page.

または、独自のビューを作成したくない場合

https://docs.djangoproject.com/en/dev/topics/auth/default/#Django.contrib.auth.views.logout

{% url 'logout' next='/some/url/' %}
4
Wolph

Django例として...後に続く同じ問題が発生していました...このURLが私のために働いたことを発見しました

url(r'^logout/$', 'Django.contrib.auth.views.logout', { 'template_name': 'account/logout.html',}, name='logout' ),
4
Paddy Popeye

最も簡単な解決策は次のとおりです。

  1. アプリがbeforeDjango.contrib.adminsettings.pyのインストール済みアプリの下にあることを確認します。

  2. テンプレートの名前がlogged_out.htmlであることを確認してください。

3
markh

LOGOUT_REDIRECT_URLあなたのsettings.pyリダイレクト先のURL名を含むファイル。 LOGOUT_REDIRECT_URL = 'index'

2
John

Settings.pyに移動して、このコードを追加します。 「/」はあなたを家にリダイレクトします

# Where to redirect during authentication
LOGIN_REDIRECT_URL = "/" #To go to home after login instead of getting redirected to accounts/profile on login which is default
LOGOUT_REDIRECT_URL = "/" #To logout back to the home page instead of the default admin logout page
1
Samuel Folledo

誰もこれについて言及していないことに驚いています。これをsettings.pyに入れて、ログインおよびログアウトするときにリダイレクトできます:

LOGIN_REDIRECT_URL = '/go-here-after-login/'
LOGOUT_REDIRECT_URL = '/go-here-after-logout/'
1
user500660

ここでローダーを置き換えるだけで、認証テンプレートが「your_progect_apps/templates/registration」に見つかります。

TEMPLATES = [
{
    'BACKEND': 'Django.template.backends.Django.DjangoTemplates',
    'DIRS': [os.path.join(BASE_DIR, 'templates')],
    'OPTIONS': {
        'context_processors': [
            'Django.template.context_processors.debug',
            'Django.template.context_processors.request',
            'Django.contrib.auth.context_processors.auth',
            'Django.contrib.messages.context_processors.messages',
        ],
        'loaders': [
            'Django.template.loaders.filesystem.Loader',
            'Django.template.loaders.app_directories.Loader',
        ],
    },
},

]

Django v2.1