我目前正試圖讓我的Django登錄/註銷正常工作,但在登錄和註銷一次後出現問題。如果我以同一用戶或另一用戶的身份再次登錄,則無法再次註銷。我很好奇,如果有人曾經遇到過這種情況,因爲我目前無法弄清楚發生了什麼,並且我嘗試了contrib.auth.logout以及我自己的註銷視圖,它們調用註銷(請求)。第二個Django註銷不起作用
謝謝
- 編輯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)
...
和我用的是logout_view作爲URL的退出按鈕模板。
- EDIT 2 -
我的urls.py現在是這樣的:
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'),
...
]
我也用我的功能@login_required裝飾。我想我想知道的是如何實現由Django提供的登錄和註銷視圖以及我目前擁有的視圖。
顯示一些代碼,比如'logout'查看 – Bijoy
剛剛編輯@Bijoy – Evachine