0

我使用新方法 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)
4

1 回答 1

2

看起来django-registration完全符合您的要求,包括所有视图和表单。看起来他们的方法是使用通用形式,而不是模型形式。从快速入门文档:

  1. 用户通过提供用户名、电子邮件地址和密码来注册帐户。
  2. 根据这些信息,创建了一个新的用户对象,其 is_active 字段设置为 False。此外,还会生成并存储激活密钥,并向用户发送一封电子邮件,其中包含点击以激活帐户的链接。
  3. 单击激活链接后,新帐户将被激活(is_active 字段设置为 True);在此之后,用户可以登录。
于 2013-06-04T19:53:11.627 回答