0
我正在學習Django。那麼,或多或少;) 我正在寫一個登錄表單。因爲我想知道東西是如何工作的,因爲我需要這樣做。如何在Django的登錄處理中獲取用戶會話?
我無法把事情做好。用戶在身份驗證後,在我的「成功」視圖中看不到,因爲它重定向回登錄。
我確實設置了我的MIDDLEWARE_CLASSES。
「有趣的事情」是我認爲它進展順利,因爲它似乎工作。但是,我發現這是一個使用我的用戶憑據的舊會話。現在我刪除了所有會話/ cookie的東西,我沒有工作。
這是我到目前爲止有:
# views.py
from django.shortcuts import render_to_response
from django.contrib.auth import authenticate
from django.template import RequestContext
from django.http import HttpResponseRedirect
from django.core.urlresolvers import reverse
def login(request):
username = password = usertype = login_error_message = ''
if request.POST:
username = request.POST.get('username')
password = request.POST.get('password')
usertype = request.POST.get('usertype')
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
return HttpResponseRedirect(reverse('login:success'))
else:
login_error_message = "Not active."
else:
login_error_message = "Unknown user"
return render_response(request, 'login/login.html', {
'login_error_message': login_error_message,
'usertype': usertype
})
def success(request):
if request.user.is_authenticated():
user = request.user
return render_response(request, 'login/success.html', {
'username': user.username,
})
else:
return HttpResponseRedirect('/login/')
# https://djangosnippets.org/snippets/3/
# Wrapper simplifies using RequestContext in render_to_response.
# overkill at this point, but may come in handy in view files with more views
def render_response(req, *args, **kwargs):
kwargs['context_instance'] = RequestContext(req)
return render_to_response(*args, **kwargs)
這是我的URL:
# urls.py
from django.conf.urls import patterns, url
from diataal.apps.login import views
urlpatterns = patterns('',
url(r'^$', views.login),
url(r'^success/', views.success, name='success'),
)
我的網址顯示的登錄頁面。如果我沒有在「成功」視圖中添加對用戶的檢查,則會顯示成功頁面(來自登錄的302響應,然後來自成功頁面的200響應);這對我來說似乎沒問題。
但與檢查,我從「成功」視圖中的302響應,我在後面再次登錄頁面...
我不知道如何解決這個...我是什麼做錯了?
你拯救了我的一天和大腦...... :) – ProX 2014-11-24 15:52:14