Python 用户注册时发送密码,django allauth

Python 用户注册时发送密码,django allauth,python,django,forms,email,django-allauth,Python,Django,Forms,Email,Django Allauth,我正在使用django alluth在我的django应用程序上进行身份验证/注册。 我需要创建一个自定义的注册表单,其中只有一个字段:email。密码将在服务器上生成。以下是我创建的一个表单: from django import forms from users.models import User class SignupForm(forms.ModelForm): email = forms.CharField() class Meta: model

我正在使用django alluth在我的django应用程序上进行身份验证/注册。 我需要创建一个自定义的注册表单,其中只有一个字段: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\u signed\u
django-allauth信号会很好,但不可能在其中获取用户密码,因为密码存储在散列中。有没有办法将其他参数传递给信号?或者可能还有其他方法发送电子邮件


非常感谢。

如果您不想在注册方法中注册,请不要在表单中注册,而是在视图中注册


只有当您创建密码并将其提供给用户时,您才有权访问密码。因此,此时您需要将密码发送给该用户。

是的,谢谢。我通过创建
utils.py
文件并在其中定义一个发送电子邮件的函数来解决这个问题。