Django просмотров.PasswordResetView отправлять электронную почту не html типа - PullRequest
1 голос
/ 12 июля 2020

Я пытаюсь сбросить свой пароль, но электронная почта не выглядит как html urls.py

    url(r'^password_reset/$', auth_views.PasswordResetView.as_view(
        template_name='account/password_reset_form.html',
        email_template_name='account/password_reset_email.html',
        success_url='/account/password_reset_done'
    ), name='password_reset'),

password_reset_email. html

<p>您收到这封邮件是因为您正在重置密码,如果非本人操作请勿略</p>
<p>请点击下面网站设置一个新密码:</p>
<a href="{{ protocol }}://{{ domain }}{% url 'account:password_reset_confirm' uidb64=uid token=token %}"></a>
<p>用户名:{{ user.get_username }}</p>
<p>感谢使用我们的网站</p>
<p>晶晨羽毛球协会</p>

setting.py

# 将发送的邮件直接显示在控制台
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
# smpt服务地址
EMAIL_HOST = 'smtp.qq.com'
EMAIL_PORT = 25
# 发送邮件的邮箱
EMAIL_HOST_USER = 'xxxx33928@qq.com'
# 在邮箱中设置的客户端授权密码
EMAIL_HOST_PASSWORD = 'xxxxgorrbecd'
# 收件人看到的发件人
DEFAULT_FROM_EMAIL = 'xxx3928@qq.com'
SERVER_EMAIL ='xxx3928@qq.com'

myemail

<p>您收到这封邮件是因为您正在重置密码,如果非本人操作请勿略</p>
<p>请点击下面网站设置一个新密码:</p>
<a href="http://127.0.0.1:8000/account/password_reset_confirm/MQ/5i4-0dfc61d517145c2857dd/"></a>
<p>用户名:coco</p>
<p>感谢使用我们的网站</p>
<p>晶晨羽毛球协会</p>

urls.py

from django.contrib import admin
from django.urls import path
from django.conf.urls import url, include
from django.contrib.auth import views as auth_views

from .views import UserListView, RegisterView

urlpatterns = [
    url(r'^$', UserListView.as_view(), name='index'),
    url(r'^login/$', auth_views.LoginView.as_view(template_name='account/login.html'), name='login'),
    url(r'^logout/$', auth_views.LogoutView.as_view(template_name='account/logout.html'), name='logout'),
    url(r'^register/$', RegisterView.as_view(), name='register'),

    url(r'^password_change/$', auth_views.PasswordChangeView.as_view(
        template_name='account/password_change_form.html',
        success_url='/account/password_change_done/'
    ), name='password_change'),

    url(r'^password_change_done/$', auth_views.PasswordChangeDoneView.as_view(
        template_name='account/password_change_done.html',
    ), name='password_change_done'),

    url(r'^password_reset/$', auth_views.PasswordResetView.as_view(
        template_name='account/password_reset_form.html',
        html_email_template_name='account/password_reset_email.html',
        success_url='/account/password_reset_done'
    ), name='password_reset'),

    url(r'^password_reset_done/$', auth_views.PasswordResetDoneView.as_view(
        template_name='account/password_reset_done.html'
    ), name='password_reset_done'),

    path('password_reset_confirm/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(
        template_name='account/password_reset_confirm.html',
        success_url='/account/password_reset_complete'
    ), name='password_reset_confirm'),
    url(r'password_reset_complete/$', auth_views.PasswordResetCompleteView.as_view(
        template_name='account/password_reset_complete.html'
    ), name='password_reset_complete'),
]

ошибка Ошибка при отрисовке шаблона В шаблоне /home/coco/.virtualenvs/badmintion/lib/ python3 .6 / site-packages / django / contrib / admin / templates / registration / password_reset_email. html, ошибка в строке 6

Реверс для 'password_reset_confirm' не найден. 'password_reset_confirm' не является допустимой функцией просмотра или именем шаблона.

Похоже на текстовый текст. Ярлык бесполезен. Где моя проблема. Как исправить?

1 Ответ

0 голосов
/ 12 июля 2020

Параметр email_template_name в PasswordResetView [Django -doc] используется для текста сообщения электронной почты. Вам следует использовать параметр <b>html_</b>email_template_name (то есть с префиксом html_):

url(
    r'^password_reset/$',
    auth_views.PasswordResetView.as_view(
        template_name='account/password_reset_form.html',
        <b>html_email_template_name='account/password_reset_email.html'</b>,
        <b>email_template_name='account/password_reset_email.html'</b>,
        success_url='/account/password_reset_done'
    ), name='password_reset'
),
...