在用户注册时发送密码Djangoallauth

2024-09-27 07:30:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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()

在设置.py公司名称:

^{pr2}$

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

倾听user_signed_updjango allauth信号是很好的,但是不可能在其中获得用户密码,因为密码存储在散列中。有什么方法可以传递额外的参数给信号吗?或者有其他方法发送电子邮件?在

非常感谢。在


Tags: django方法fromimportself密码表单fields
1条回答
网友
1楼 · 发布于 2024-09-27 07:30:48

如果不想在signup方法中进行注册,那么不要在表单内部进行注册,而是在视图中进行注册。在

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

相关问题 更多 >

    热门问题