如何在Django 1.5中创建用户

时间:2013-06-04 17:46:53

标签: django django-models django-forms django-authentication

我使用新方法create_inactive_user扩展了我的UserManager。但是我如何使用UserCreationForm?

class UserManager(UserManager):
    def create_inactive_user(self, username, email, password):
        user = self.create_user(username, email, password)
        user.is_active = False
        salt = hashlib.sha1(str(random.random())).hexdigest()[:5]
        activation_key = hashlib.sha1(salt+user.username).hexdigest()
        user.activation_key = activation_key
        user.save()
        return user

我可以在https://github.com/django/django/blob/master/django/contrib/auth/forms.py中看到UserCreationForm是一个保存对象的ModelForm,那么我如何确保通过我的FormView中的create_inactive_user()注册用户?

是这样的:

class SignupView(FormView):
    form_class = UserCreationForm
    template_name = 'signup.html'

    def form_valid(self, form):
        User.objects.create_inative_user(form.cleaned_data['username'], form.cleaned_data['email'], form.cleaned_data['password'])
        return super(SignupView, self).form_valid(form)

1 个答案:

答案 0 :(得分:2)

看起来django-registration正是您正在尝试做的事情,其中​​包含所有视图和表单。看起来他们的方法是使用通用形式,而不是模型形式。从快速入门文档:

  
      
  1. 用户通过提供用户名,电子邮件地址和密码来注册帐户。
  2.   
  3. 根据此信息,将创建一个新的User对象,其is_active字段设置为False。另外,激活密钥是   生成并存储,并向包含a的用户发送电子邮件   链接以点击激活帐户。
  4.   
  5. 单击激活链接后,新帐户将处于活动状态(is_active字段设置为True);在此之后,用户可以登录。
  6.