0

我正在关注 Corey Schafer 视频讲座 >> 密码重置电子邮件

网址.py

from django.contrib import admin
from django.contrib.auth import views as auth_views
from django.urls import path, include
from users import views as user_views
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')),
    path('profile/', user_views.profile, name='profile'),
    path('register/', user_views.register, name='register'),
    path('login/', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'),
    path('logout/', auth_views.LogoutView.as_view(template_name='users/logout.html'), name='logout'),

    path('password-reset/', auth_views.PasswordResetView.as_view(
        template_name='users/password_reset.html'), name='password_reset'),

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

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

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL,
                          document_root=settings.MEDIA_ROOT)

并为这些路线创建了 3 个 HTML 文件

但是根据他的演讲>>然后他点击按钮(请求重置密码)他遇到了错误,就像noReverseMatch Reverse for 'password_reset_confirm' bla bla bla 他创建了另一个处理这个问题的路线一样('password-reset-confirm///')

但就我而言,当我点击按钮请求重置密码时,它会将我带到这条路线“密码重置/完成/”(没有错误,没有发送电子邮件)

设置.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = "smtp.gmail.com"
EMAIL_PORT = 587
EMAIL_USE_TLS = True
EMAIL_HOST_USER =  config.EMAIL
EMAIL_HOST_PASSWORD = config.PASS
4

1 回答 1

1

对于那些像我一样在这个电子邮件发送教程中苦苦挣扎的人:如果您没有收到任何电子邮件并且没有收到任何错误,那么如果您在表单中提交的电子邮件地址没有,Django 似乎不会发送电子邮件匹配在数据库中为用户注册的电子邮件(在配置文件和管理页面中指定)。换句话说,我在重置密码时没有错误,但我也没有收到任何电子邮件。经过几个小时的挣扎,我只是更改了用户电子邮件地址,以便它与我想发送电子邮件的那个匹配并且它有效。(在 utube 评论中回复 Elijah Mayorov)

于 2021-02-20T10:46:35.547 回答