Python 用户注册时发送密码,django allauth
我正在使用django alluth在我的django应用程序上进行身份验证/注册。 我需要创建一个自定义的注册表单,其中只有一个字段:email。密码将在服务器上生成。以下是我创建的一个表单: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
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
文件并在其中定义一个发送电子邮件的函数来解决这个问题。