发送用户注册密码,django-allauth

时间:2016-11-14 10:49:30

标签: python django forms email django-allauth

我在django app上使用django-alluth进行身份验证/注册。 我需要创建一个只有一个字段的自定义注册表单:email。密码将在服务器上生成。这是我创建的表单:

from django import forms
from users.models import User


class SignupForm(forms.ModelForm):
    email = forms.CharField()

    class Meta:
        model = User
        fields = ['email',]
        esclude = ['password1', 'password']

    def __init__(self, *args, **kwargs):
        super(SignupForm, self).__init__(*args, **kwargs)
        del self.fields['password1']
        del self.fields['password2']

    def signup(self, request, user):
        password = str(User.objects.make_random_password())
        user.set_password(password) #!!!!!!! HERE 
        user.save()

在settings.py中:

ACCOUNT_SIGNUP_FORM_CLASS = 'users.forms.SignupForm'

现在我需要用他的密码向用户发送电子邮件。当然,我可以在signup方法中执行此操作,但这不是一种好的做法,因为只需要一个表单来收集和检查信息。

user_signed_up django-allauth信号会很好,但是不可能在其中获取用户密码,因为密码存储在哈希中。有没有办法将其他参数传递给信号?或者也许还有其他方法可以发送电子邮件?

非常感谢。

1 个答案:

答案 0 :(得分:1)

如果您不想在注册方法中执行此操作,请不要在表单内部进行注册,而是在视图中进行注册。

只有在您创建密码并将其提供给用户时才能访问密码,这时您需要将密码发送给所述用户。