Django-创建用户

时间:2013-04-22 09:25:26

标签: django django-models django-views

我想创建非活动用户并向他们发送激活电子邮件。 这是我的观点:

secret = hexlify(os.urandom(6))
userName = form.cleaned_data['email']
if User.objects.filter(username=userName):
    message = EmailMessage('portal/pay_email2.html',{'refid':pk, 'amount':total,'Payment':Payment,'secret': secret }, 'Madeeha ', to=[form.cleaned_data['email']])
    message.send()
else:
    userPass = hexlify(os.urandom(4))
    userMail = form.cleaned_data['email']
    user = User.objects.create_user(userName, userMail,userPass)
    user.save()
    message = EmailMessage('portal/pay_email.html',{'refid':pk, 'amount':total,'Payment':Payment,'userName':userName, 'userPass':userPass, 'secret': secret }, 'Madeeha ', to=[form.cleaned_data['email']])
    message.send()

2 个答案:

答案 0 :(得分:3)

User.objects.create_user方法将创建一个活动标志设置为true的用户。

您有几个选择:

  • 保存后,您可以将值设置为false,然后更新(额外的数据库调用)
  • 您可以使用较长的手动表示法(不使用辅助方法)
  • 创建用户
  • 使用is_active = False的键值覆盖create_user方法:

    # create_user(username, email=None, password=None, **extra_fields) User.objects.create_user('username', email='email', password='pass', is_active=False)

答案 1 :(得分:1)

首先,您也应该分享您的用户模型。如果这是Django 1.5,您可以/应该为is_activeis_adminis_superuser等用户定义状态字段。(如MattWritesCode所述)。

然后,您只需使用简单的查询集创建用户:

create_user = UserProfile.objects.create_user(username=xxx, email=xx@xx.com, is_active=False,  is_admin=False)