Django отправляет ссылку на сброс пароля по электронной почте при добавлении новой учетной записи пользователя

Я работаю над приложением, в котором администраторы будут создавать новые учетные записи пользователей. При добавлении пользователя автоматически генерируется произвольный пароль. В идеале новому пользователю будет автоматически отправляться письмо со ссылкой для сброса пароля (в нем не будет автогенерируемого пароля). Я могу придумать, как отправить письмо со ссылкой на страницу, где нужно ввести email, чтобы получить ссылку на сброс пароля. Однако я хотел бы избежать дополнительных шагов и просто отправить ссылку для сброса пароля

Есть предложения, как запустить и отправить эту ссылку?

Модель:

from django.db import models
from django.contrib.auth.models import AbstractUser
from django.contrib.auth.models import Group
from django.contrib import admin
from django.db.models import Count
from django.db.models.signals import post_save


class CustomUser(AbstractUser):
    full_name = models.CharField(max_length=250, null=True)
    age = models.PositiveIntegerField(null=True, blank=True)
    employee_type = models.ForeignKey(Group, null=True, on_delete=models.SET_NULL, default=1)
    employee_start_date = models.DateField(null=True, blank=True)
    is_active = models.BooleanField(null=False, default=True)

Вид:

class AddCompanyEmployee(CreateView):
    model = CustomUser
    template_name = 'manage/add_employee.html'
    form_class = BrowserCreateUserForm
    success_url = reverse_lazy('directory')

    def form_valid(self, form):
        password = CustomUser.objects.make_random_password()
        account = form.save(commit=False)
        account.password = make_password(password)
        account.save()
        return super().form_valid(form)

Форма:

class BrowserCreateUserForm(forms.ModelForm):
    class Meta:
        model = CustomUser
        fields = ['username','full_name', 'email', 'employee_type', 'employee_start_date', 'is_active']

        widgets = {
            'employee_start_date': forms.DateInput(attrs=dict(type='date')),
        }

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.layout = Layout(
          Div('username', css_class='form-group col-lg-6'),
          Div('full_name', css_class='form-group col-lg-6'),
          Div('email', css_class='form-group col-lg-6'),
          Div('employee_type', css_class='form-group col-lg-3'),
          Div('employee_start_date', css_class='form-group col-lg-3'),
          Div('is_active', css_class='form-group col-lg-3'),

            )
        self.helper.add_input(Submit('submit', 'Submit'))
Вернуться на верх