用户密码设置为随机值

2024-09-27 18:04:38 发布

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

在我的应用程序中,我希望“父用户”添加其他用户。它应该将它们作为用户添加到自定义用户模型中,但不应该提供设置密码的选项,而是设置随机密码。 目前我似乎无法隐藏表单上的密码。因此,这是第一步,添加的用户不应该看到密码字段,然后添加用户后,它应该设置随机密码,并通过电子邮件向他们发送密码。你知道吗

如果这是一个错误的方向,还有什么其他的选择。 表格

class AddStaffMember(UserCreationForm):
    usrtype = forms.ChoiceField(choices=[('Admin','Admin'),('Manager','Manager'),('Employee','Employee')],label="User Type: See below for descriptions" )
    password1 = forms.HiddenInput()
    password2 = forms.HiddenInput()
    class Meta:
        model = get_user_model()
        fields = ("firstname","lastname","email","usrtype","password1","password2")
        labels = {
            "firstname": _("First Name"),
            "lastname": _("Last Name"),
            "email": _("E-mail"),
        }
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

型号

class AddStaffView(CreateView):
    form_class = forms.AddStaffMember
    success_url = reverse_lazy('nodisoapp:home')
    template_name = "scrty/addstaff.html"
    def form_valid(self, form):
        self.object = form.save(commit=False)
        self.object.password1 = get_random_string(length=8)
        self.object.password2 = self.object.password1
        self.object.save()
        message = render_to_string('scrty/invite_email.html',{
        'user':self.object.firstname,
        'username':self.object.email,
        'sender':self.request.user.firstname,
        'domain':'127.0.0.1:8000/nodiso',
        'password':self.object.password,
        })
        mail_subject = 'You have been invited to join Nodiso'
        email = EmailMessage(mail_subject, message, to=[self.object.email])
        email.send()
        return super(AddStaffView, self).form_valid(form)

Tags: to用户selfform密码objectemailmail

热门问题