PasswordResetConfirmView не генерирует почту - PullRequest
1 голос
/ 23 января 2020

Я пытаюсь установить ссылку "забыл пароль" в своем приложении django, используя стандартные виды авторизации, но с моими собственными шаблонами внутри указанного c пути. Я смог реализовать форму сброса и окно «Готово», но в данный момент почта не генерируется. Также не ошибки.

Это мой файл urls.py:

path('password-reset/', PasswordResetView.as_view(
         template_name='auth/reset_password/reset.html',
         subject_template_name='auth/reset_password/mail_subject.txt',
         email_template_name='auth/reset_password/mail_body.html',
         success_url='/password-reset/done/'
     ), name='password_reset'),

path('password-reset/done/', PasswordResetDoneView.as_view(
         template_name='auth/reset_password/done.html'
     ), name='password_reset_done'),

path('password-reset-confirm/<uidb64>/<token>/',
     PasswordResetConfirmView.as_view(
         template_name='auth/reset_password/confirm.html'
     ), name='password_reset_confirm'),

path('password-reset-complete/',
     PasswordResetCompleteView.as_view(
         template_name='auth/reset_password/complete.html'
     ), name='password_reset_complete'),

Мой mail_body. html:

{% autoescape off %}
  To initiate the password reset process for your {{ user.get_username }} TestSite Account,
  click the link below:{% url 'password_reset_confirm' uidb64=uid token=token %}
  If clicking the link above doesn't work, please copy and paste the URL in a new browser
  window instead.
  Sincerely,
  The Epicups Team
{% endautoescape %}

Я думаю, что, возможно, мой Модель пользователя может быть проблемой, так как я использую почту в качестве имени пользователя, поэтому вот она:

class CustomUser(AbstractBaseUser, PermissionsMixin): 

email= models.EmailField(_('email'), unique=True)
vat_number =  models.CharField(_('vat_number'), max_length=9)
company_name = models.CharField(_('company_name'), max_length=255)
contact_person = models.CharField(_('contact_person'), max_length=255)
host_id = models.CharField(_('host_id'), max_length=255, blank=True)
last_login_at = models.DateTimeField(_('last_login_at'), auto_now_add=True)
current_login_at = models.DateTimeField(_('current_login_at'), auto_now_add=True)
last_login_ip = models.CharField(_('last_login_ip'), max_length=100, blank=True)
current_login_ip = models.CharField(_('current_login_ip'), max_length=100, blank=True)
login_count = models.BigIntegerField(_('login_count'), null=True)
is_active = models.BooleanField(_('is_active'), null=True)
confirmed_at = models.DateTimeField(_('current_login_at'), auto_now_add=True)
role_id = models.BigIntegerField(_('login_count'),  null=True)

USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['vat_number','company_name','contact_person']

objects =  MyUserManager()

Возможно ли это? Если так, я понятия не имею, как это исправить. Перенаправление success_url происходит.

Мои настройки.py:

EMAIL_HOST = 'localhost'
DEFAULT_FROM_EMAIL = 'example@example.com'
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' 

1 Ответ

0 голосов
/ 23 января 2020

Вам необходимо указать EMAIL_FIELD в вашей модели:

EMAIL_FIELD = 'email'
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['vat_number','company_name','contact_person']
...