現在、Djangoログイン/ログアウトが正しく機能するようにしようとしていますが、ログインして一度ログアウトすると問題が発生します。同じユーザーまたは別のユーザーとして再度ログインすると、もうログアウトできなくなります。私は現在、何が起こっているのか分からないので誰もこれまでに経験したことがあるのか不思議です。contrib.auth.logoutとログアウト(要求)を呼び出す自分のログアウトビューを試しました。2回目のDjangoログアウトが機能しない
はあなたに
をありがとう - EDIT 1から
私は、これは、キャッシング問題になる可能性が考え始めていますが、私は非常にそれを疑います。
MY_APP/urls.py:
from django.conf.urls import url
from django.contrib.auth import views as auth_views
from . import views
urlpatterns = [
url(r'^$', views.index, name = 'index'),
#url(r'^login/$', auth_views.login, name = 'login'),
#url(r'^logout/$', auth_views.logout, name = 'logout'),
url(r'^login/$', views.login_view, name = 'login_view'),
url(r'^logout/$', views.logout_view, name = 'logout_view'),
...
]
MY_APP/views.py:
...
def index(request): # Main login page
if request.user.is_authenticated:
user = request.user
gen_prof = General_Profile.objects.get(user_id = user.id)
return redirect('home_page', permanent = True)
return redirect('login_view', permanent = True)
def login_view(request):
if request.method == 'POST':
form = LoginForm(request.POST)
if form.is_valid():
cleaned = form.cleaned_data
username = cleaned['username']
password = cleaned['password']
user = authenticate(username = username, password = password)
if user is not None:
login(request, user)
gen_prof = General_Profile.objects.get(user_id = user.id)
# Redirect to a success page.
return redirect('home_page', permanent = True)
#else:
# return HttpResponse("user is None")
# Return an 'invalid login' error message.
else:
form = LoginForm()
template = loader.get_template('cloud/login.html')
context = {'form': form}
return HttpResponse(template.render(context, request))
def logout_view(request):
logout(request)
return redirect('login_view', permanent = True)
...
と私はログアウトボタンのURLとしてlogout_viewを使用したテンプレートで
。私も私の機能のための@login_requiredデコレータを使用していますurlpatterns = [
url(r'^$', views.index, name = 'index'),
url(r'^accounts/login/$', auth_views.login),
url(r'^login/$', auth_views.login, name = 'login_view'),
url(r'^logout/$', auth_views.logout, name = 'logout_view'),
#url(r'^login/$', views.login_view, name = 'login_view'),
#url(r'^logout/$', views.logout_view, name = 'logout_view'),
...
]
:
- - EDIT 2
私urls.pyは今、このです。私が把握しようとしているのは、提供されているログインとログアウトビューをDjangoの現在のビューと一緒に実装する方法です。
あなたのログインおよびログアウトビューで恒久的なリダイレクトを使用している
'logout'のようなコードを表示 – Bijoy
@Bijoyを編集しました – Evachine