Как отправить письмо со сброшенным паролем в Django при создании пользователя?

Я хочу иметь возможность позволить администратору создавать учетные записи пользователей, а затем, вместо того, чтобы устанавливать пароль для пользователя, пользователь автоматически получал бы письмо со сброшенным паролем.

Представление для создания пользователя, которое также включает модель Member, следующее:

def newmember(request):

    if request.method == 'POST':
        nu_form = NewUser(request.POST)
        nm_form = NewMember(request.POST)
    
        if nu_form.is_valid() and nm_form.is_valid():
            nusave = nu_form.save()
            nmsave = nm_form.save(commit = False)
            nmsave.user = nusave
            nmsave.save()
            return redirect(members)
        else:
            print(nu_form.errors)
            print(nm_form.errors)
    
    else:

        nu_form = NewUser()
        nm_form = NewMember()

    context = {
        'nu_form': nu_form, 
        'nm_form': nm_form}
    
    return render(request, 'web/newmember.html', context)

Как сделать так, чтобы при создании нового пользователя Django автоматически отправлял ему письмо с запросом на сброс пароля?

В вашем models.py:

def save(self, *args, **kwargs):
    send_mail('subject', 'message', 'your email', 'user email')
    return super().save(*args, **kwargs)

Для того чтобы отправить письмо при создании пользователя, необходимо определить метод, который отправляет письмо, как показано ниже :-

  1. Создайте имя текстового файла, например, 'email_content.txt'

    Пожалуйста, сбросьте пароль для вашего профиля {{имя пользователя}}

    . Нажмите здесь
  2. Обновите метод newmember и добавьте в него следующий код :-

             template = get_template('email_content.txt')
             context = {"usename": nmsave.user.username}
             content = template.render(context)
    
             email = EmailMessage(
                 "Congratulation, please reset your account password", content, 'App Name' <sender_email>
             )
             email.content_subtype = "html"
             email.send()
    

добавьте приведенный выше код в блок try catch

Вернуться на верх