所以基本上我的问题是这个,在我用dajngo内置系统验证用户之后,用户切换到用户" admin"而不是让以前的用户保持在会话中。代码:
from django.contrib.auth import authenticate
from django.contrib.auth.decorators import login_required
def new_login_view(request):
if request.method == 'POST':
data = dict(request.POST)
data.pop('csrfmiddlewaretoken')
id_client = data['lg_username'][0]
pass_client = data['lg_password'][0]
user = authenticate(username=id_client, password=pass_client)
if user is not None:
# A backend authenticated the credentials
...
return render(request, 'initial_page.html', dictionary_with_info)
当我在initial_page.html
并激活视图时,即:
@login_required
def home(request):
if request.method == 'POST':
...
当我致电request.user
时,我得到:User: admin
而不是之前的用户。
任何想法为什么?
答案 0 :(得分:2)
您只是在验证用户身份。您尚未调用login()
来实际登录用户。
from django.contrib.auth import authenticate, login
def new_login_view(request):
if request.method == 'POST':
...
user = authenticate(username=id_client, password=pass_client)
if user is not None:
login(request, user)
# Redirect to a success page.
有关详细信息,请参阅how to log a user in上的文档。
请注意,Django附带内置authentication views。我建议您使用提供的登录视图,而不是自己编写。