我在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信号会很好,但是不可能在其中获取用户密码,因为密码存储在哈希中。有没有办法将其他参数传递给信号?或者也许还有其他方法可以发送电子邮件?
非常感谢。
答案 0 :(得分:1)
如果您不想在注册方法中执行此操作,请不要在表单内部进行注册,而是在视图中进行注册。
只有在您创建密码并将其提供给用户时才能访问密码,这时您需要将密码发送给所述用户。