【问题标题】:Django not sending emails to localDjango不向本地发送电子邮件
【发布时间】:2020-08-17 13:06:07
【问题描述】:

我对 django 非常陌生,以前使用以下方式将电子邮件发送到我的终端:

python -m smtpd -n -c DebuggingServer localhost:1025

我正在尝试访问 PasswordResetConfirmView 模板,但无法访问该 url,因为它没有出现在我的终端中。我相信它现在没有发送电子邮件。

这是我之前在设置中使用的:

EMAIL_HOST = 'localhost'
EMAIL_PORT = 1025

这是我的网址:

urlpatterns = [
    # Homepage
path('', views.home, name='home'),
# Login/Logout
path('login/', LoginView.as_view(template_name='accounts/login.html'), name='login'),
path('logout/', LogoutView.as_view(template_name='accounts/logout.html'), name='logout'),
# Register
path('register/', views.register, name='register'),
# Profile
path('profile/', views.view_profile, name='view_profile'),
# Edit profile
path('profile/edit/', views.edit_profile, name='edit_profile'),
# Edit password
path('change-password/', views.change_password, name='change_password'),
# Password reset
path('reset-password/', PasswordResetView.as_view(template_name='accounts/reset_password.html'),
     name='reset_password'),
path('reset-password/done/', PasswordResetDoneView.as_view(template_name= 'accounts/reset_password_done.html'),
     name='password_reset_done'),
path('reset-password/confirm/<uidb64>/<token>/', PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
path('reset-password/complete/', PasswordResetCompleteView.as_view(template_name= 'accounts/reset_password_complete.html'),
     name='password_reset_complete')
]

还有一个 change_password 视图:

def change_password(request):
    if request.method == 'POST':
        form = PasswordChangeForm(data=request.POST, user= request.user)

        if form.is_valid():
            form.save()
            update_session_auth_hash(request, form.user)
            return redirect(reverse('view_profile'))
        else:
            return redirect(reverse('change_password'))
    else:
        form = PasswordChangeForm(user= request.user)
    args = {'form' : form}
    return render(request, 'accounts/change_password.html', args)

我不知道为什么这会停止发送电子邮件,并且我在任何页面上都没有收到任何错误。有什么想法吗?

【问题讨论】:

    标签: python django email django-views


    【解决方案1】:

    为什么不使用类基视图来处理密码重置并将其附加到您的设置中

    EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

    注意:您不需要 EMAIL_HOST 和 EMAIL_PORT,因为您将其发送到终端。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-10
      • 2010-11-27
      • 1970-01-01
      • 2019-12-15
      • 1970-01-01
      • 2011-09-16
      • 1970-01-01
      • 2013-07-17
      相关资源
      最近更新 更多