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'))