Python Django:在管理员批准新创建的用户之前,不允许其登录?

Python Django:在管理员批准新创建的用户之前,不允许其登录?,python,django,Python,Django,我最近试图开发一个网站使用Django,其中一个人可以在系统中注册,但他/她不应该被允许登录到系统,直到管理员批准的请求。我尝试了user.is_活动字段,但它所做的唯一事情是阻止新用户以管理员身份访问。换句话说,系统给予他/她登录系统的权限。我的代码如下: # create a new user but he will be inactive until admin's approval user = User.objects.create_user(username=username, p

我最近试图开发一个网站使用Django,其中一个人可以在系统中注册,但他/她不应该被允许登录到系统,直到管理员批准的请求。我尝试了user.is_活动字段,但它所做的唯一事情是阻止新用户以管理员身份访问。换句话说,系统给予他/她登录系统的权限。我的代码如下:

#  create a new user but he will be inactive until admin's approval
user = User.objects.create_user(username=username, password=password)
user.is_active = False
将用户的is_active字段更改为False后,我尝试使用新用户的用户名和密码登录系统,系统允许我进入。这是我的登录代码:

def login(request):
    context = RequestContext(request)
    username = request.POST.get('username', '')
    password = request.POST.get('password', '')
    user = auth.authenticate(username = username, password = password)

    if user is not None and request.user.is_active:
        auth.login(request, user)
        print 'login'
        print request.user.username
        print request.user.is_active
        return redirect('app.views.results')

    else:
        print 'no login'
        return render(request, 'login.html')
当我打印用户的用户名和is_active字段时,我看到“is_active”字段是True而不是False。代码有问题还是我遗漏了什么?
任何解决此问题的更好方法都将受到欢迎和赞赏。

在为模型对象的属性执行值分配后,应调用object.save(),如下所示:

这将保存您对对象所做的更改


中,您确定在将“激活”设置为false后保存了用户吗?另请注意,在调用auth.login之前,用户不会处于request.user中;您应该检查
用户。是否处于活动状态
。谢谢@DanielRoseman问题是我没有保存用户。是的,你提到的关于用户而不是request.user的第二件事也是正确的。我解决了这个问题,它似乎工作正常。只需将字段传递到
create\u user
,您将保存2行和1 db查询:
user.objects.create\u user(username=username,password=password,is\u active=False)
谢谢您的评论。这显然是一个更好的解决方案。
user = User.objects.create_user(username=username, password=password)
user.is_active = False
user.save()