【问题标题】:How to create users in Django 1.5如何在 Django 1.5 中创建用户
【发布时间】:2013-05-31 05:27:58
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-02-25
      • 2012-05-09
      • 2013-04-05
      • 2013-02-24
      • 2014-04-05
      • 2013-10-26
      • 2023-03-26
      • 2016-10-03
      • 2019-04-01
      相关资源
      最近更新 更多