2017-01-12 9 views
-1

にログインし、私はとurl.py持っている:私は私のテンプレートにリンク<a href="{% url 'logout' %} ">Logout</a>を使用ジャンゴ:LogoutViewはログアウトしない - まだ

url(r'^logout/', views.LogoutView.as_view(), name='logout'), 

views.py

from django.contrib.auth import logout 

class LogoutView(RedirectView): 
    permanent = False 
    url = reverse_lazy('login') 

    def get(self, request, *args, **kwargs): 
     logout(request) 
     return super(LogoutView, self).get(request, *args, **kwargs) 

を。

私は自分でログアウトしようとすると動作しませんし、エラーメッセージも表示されません。

私も試してみました:

def logout_view(request): 
    logout(request) 
    return HttpResponseRedirect('/login/') 

をしかし、私はまだすべてのページにアクセスすることができます。私はクラスベースのビューを使用し、@method_decorator(login_required)を使用します。

ログインにはdjangoモジュールdjango-ldap-authを使用します。

答えて

2

permanentからpermanent = Falseに変更する必要があります。 Django 1.9+を使用している場合、デフォルトでFalseになっているため、ラインを完全に削除することができます。

そうでない場合は、ブラウザがログアウトURLに要求を行うことなくloginビューへのリダイレクトを覚えていますので、あなたはログインしたままになります。

はあなたの関数ベースのビューは、相対URLにリダイレクトを返して現時点でのログイン '(/logout/loginに例えば/logout/あなたは、URLをハードコードURLを逆に、またはあなたのためのURLを逆にredirectショートカットを使用することができ、次のいずれか。

return HttpResponseRedirect('/login/') 
return HttpResponseRedirect(reverse('login')) 
return redirect('login') 
+0

ありがとう、私はそれを変更しましたが、それでも動作しませんet。 – ikreb

+0

変更する前にブラウザがリダイレクトをキャッシュしている可能性があります。いくつかの印刷/ロギングを追加して、ビューが実際に呼び出されていることを確認します。 – Alasdair

+0

あなたの権利では、DjangoはLogoutViewのget関数を呼び出しません。なぜあなたは考えていませんか?私のリンクは '' Logout '' – ikreb

1

間違ったlogoutをインポートしました。これはビューです。ビュー内で呼び出すためにインポートするものはfrom django.contrib.auth import logoutです。

+0

をおかげで、私はそれはまだそれを変更しましたが、 – ikreb

関連する問題