18

Django からログアウト機能を使用したいのですが、適切に使用する方法がわかりません。この Django ユーザー認証を参照しています: https://docs.djangoproject.com/en/dev/topics/auth/

from django.contrib.auth import logout

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

私にとって紛らわしい部分は、 # Redirect to a success page です。別のページにリダイレクトする方法を教えてください。HttpResponseRedirect を使用するか、ログアウト (リクエスト) に追加の引数を追加する必要があります。何をすればよいかわかりません。ガイダンスが必要です。

4

5 に答える 5

20

Django には というショートカット メソッドがありredirectます。それを使用して、次のようにリダイレクトできます。

from django.contrib.auth import logout
from django.shortcuts import redirect

def logout_view(request):
    logout(request)
    return redirect('home')

次のようhomeに定義した URL パターンの名前はどこにありますか。urls.py

urlpatterns = patterns('',
    url(r'^$', 'blah.views.index', name='home'))
)

呼び出しでは、サイト ルートにリダイレクトするredirectなどのパスを使用することもできますが、名前付きビューを使用する方がはるかにクリーンです。/

PS: @Hedde によって投稿されたコードは、django.contrib.auth.viewsモジュール、logoutメソッドからのものです。それを使用したい場合は、次のようにインポートできます。

from django.contrib.auth.views import logout
于 2013-01-17T20:16:12.737 に答える
18

そのためのビューを作成する必要はありません。次のようにするだけです。

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

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

于 2014-02-19T11:48:06.423 に答える
14

logout メソッドのソースを見ると、何が起こっているのかが明確にわかるはずです。リダイレクトを処理するために logout メソッドに追加の引数を追加できますが、カスタム動作のためにメソッドの後に追加することもできます

def logout(request, next_page=None,
           template_name='registration/logged_out.html',
           redirect_field_name=REDIRECT_FIELD_NAME,
           current_app=None, extra_context=None):
    """
    Logs out the user and displays 'You are logged out' message.
    """
    auth_logout(request)
    redirect_to = request.REQUEST.get(redirect_field_name, '')
    if redirect_to:
        netloc = urlparse.urlparse(redirect_to)[1]
        # Security check -- don't allow redirection to a different host.
        if not (netloc and netloc != request.get_host()):
            return HttpResponseRedirect(redirect_to)
    #etc...
于 2012-06-28T08:54:08.137 に答える