Django не отправлять электронные письма местным - PullRequest
1 голос
/ 03 мая 2020

Я очень новичок в django, и ранее мне приходилось отправлять электронные письма на мой терминал с использованием:

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

Я пытаюсь получить доступ к шаблону PasswordResetConfirmView, но не могу получить доступ к URL-адресу, поскольку он не отображается в моем Терминал. Я полагаю, что теперь это не отправка электронного письма.

Вот что я использовал ранее в своих настройках:

EMAIL_HOST = 'localhost'
EMAIL_PORT = 1025

Вот мои URL:

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)

Я не уверен, почему это прекратило отправлять электронные письма, и я не получаю ошибок ни на одной странице. Есть идеи?

1 Ответ

1 голос
/ 03 мая 2020

Почему бы не использовать базовые представления классов для обработки сброса пароля и присоединить его к своим настройкам

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

Примечание: Что вам не нужны EMAIL_HOST и EMAIL_PORT, поскольку вы отправляете их в терминал.

...