簡単なログイン機能を提供しました。ログアウトは内蔵のものを使ってみました。これは私の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に伝えるにはどうすればよいですか?
独自のログアウトページ(your_application/templates/registration/logged_out.html)ではなく、Django管理サイトのログアウトページが表示されている場合は、プロジェクトのINSTALLED_APPS設定を確認して、 Django.contrib.adminが 'your_application'の後に来ることを確認してください。両方のテンプレートは同じ相対パスにあり、Djangoテンプレートローダーは最初に見つけたものを使用します。
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.py
のurlpatterns
に追加:
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 で確認できます。
ドキュメントによると、ログアウトビューに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/'})
これはすべてマニュアルでかなりよく説明されていますが、あなたが理解していない特定のものはありますか?
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/' %}
Django例として...後に続く同じ問題が発生していました...このURLが私のために働いたことを発見しました
url(r'^logout/$', 'Django.contrib.auth.views.logout', { 'template_name': 'account/logout.html',}, name='logout' ),
最も簡単な解決策は次のとおりです。
アプリがbeforeDjango.contrib.admin
のsettings.py
のインストール済みアプリの下にあることを確認します。
テンプレートの名前がlogged_out.html
であることを確認してください。
LOGOUT_REDIRECT_URL
あなたのsettings.py
リダイレクト先のURL名を含むファイル。 LOGOUT_REDIRECT_URL = 'index'
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
誰もこれについて言及していないことに驚いています。これをsettings.pyに入れて、ログインおよびログアウトするときにリダイレクトできます:
LOGIN_REDIRECT_URL = '/go-here-after-login/'
LOGOUT_REDIRECT_URL = '/go-here-after-logout/'
ここでローダーを置き換えるだけで、認証テンプレートが「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