Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django登录(请求,用户)don';不能将用户置于会话中?_Python_Django_Login - Fatal编程技术网

Python Django登录(请求,用户)don';不能将用户置于会话中?

Python Django登录(请求,用户)don';不能将用户置于会话中?,python,django,login,Python,Django,Login,我似乎不知道如何在Django中登录用户。我很困惑,因为文档清楚地告诉了你怎么做,但不知何故,我肯定犯了一个错误 链接 说 要从视图登录用户,请使用login()。它接受HttpRequest对象和用户对象。login()使用Django的会话框架在会话中保存用户ID 因此,我有以下views.py: def login_view(request): if request.method == 'GET': return render(request, 'app/login

我似乎不知道如何在Django中登录用户。我很困惑,因为文档清楚地告诉了你怎么做,但不知何故,我肯定犯了一个错误

链接 说 要从视图登录用户,请使用login()。它接受HttpRequest对象和用户对象。login()使用Django的会话框架在会话中保存用户ID

因此,我有以下views.py:

def login_view(request):
    if request.method == 'GET':
        return render(request, 'app/login.htm')
    if request.method == 'POST':
        username = request.POST.get('username', '')
        password = request.POST.get('password', '')
        user = auth.authenticate(username=username, password=password)
        if user is None:
            return HttpResponseRedirect(reverse('error'))
        if not user.is_active:
            return HttpResponseRedirect(reverse('error'))

        # Correct password, and the user is marked "active"
        auth.login(request, user)
        # Redirect to a success page.
        return HttpResponseRedirect(reverse('home'))

def home(request):
    contextdict = {}
    if request.session.user.is_authenticated():
        contextdict['username'] = request.session.user.username
    context = RequestContext(request, contextdict )
    return render(request, 'app/home.htm', context)
现在,通过使用print'qqq',我知道'is None'和'not is_active'已被计算为True,因此auth.login被计算并返回HttpResponseRedirect。我希望一切正常,用户登录,用户名在主视图中作为上下文传递。但是,Django给了我以下错误:

AttributeError at /app/home/
'SessionStore' object has no attribute 'user'

是的,我不知道我在做什么。

你应该使用
request.user
来获取用户对象,而不是
request.session.user


会话中的数据用于检索用户对象,但会话不包含实际用户

您应该使用
request.user
获取用户对象,而不是
request.session.user


会话中的数据用于检索用户对象,但会话不包含实际用户

是否已在模型中导入用户类?您应该访问
request.user
,而不是
request.session.user
。会话中的数据用于检索用户对象,但会话不包含实际用户。您是否已在模型中导入用户类?您应该访问
request.user
,而不是
request.session.user
。会话中的数据用于检索用户对象,但会话不包含实际用户。