我使用新方法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)
答案 0 :(得分:2)
看起来django-registration正是您正在尝试做的事情,其中包含所有视图和表单。看起来他们的方法是使用通用形式,而不是模型形式。从快速入门文档:
- 用户通过提供用户名,电子邮件地址和密码来注册帐户。
- 根据此信息,将创建一个新的User对象,其is_active字段设置为False。另外,激活密钥是 生成并存储,并向包含a的用户发送电子邮件 链接以点击激活帐户。
- 单击激活链接后,新帐户将处于活动状态(is_active字段设置为True);在此之后,用户可以登录。
醇>