Застрял с отправкой пароля сброса электронной почты в django - PullRequest
0 голосов
/ 22 февраля 2020

Я пытаюсь добавить функцию сброса пароля пользователя в моем приложении Django, используя его базовую функцию сброса пароля, с помощью учебника на канале YouTube от Corey MS. Я сделал именно то, что он сделал. Я не получаю ошибки, но письма не отправляются.

Я пытался с моим личным почтовым сервером. Я проверил это с помощью другого python скрипта, используя python smtplib и MIME, отправляя мне электронные письма отлично. Но в Django ничего не происходит.

Затем я просмотрел несколько статей и тестов. Наконец, я настроил локальный почтовый сервер с помощью командной строки с помощью этой команды python -m smtpd -n -c DebuggingServer localhost:1025. Но результат тот же. Командная строка говорит, что письмо отправлено. Но на самом деле это не так.

Вот мои скриншоты и соответствующие коды.

В моем приложении написано, что письмо отправлено. my app says, email send

сообщение об успехе и структура проекта:

success message and project structure

settings.py

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'localhost'
EMAIL_PORT = 1025

urls.py

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

urlpatterns = [
    path('admin/', admin.site.urls),
    path('register/', user_views.register, name='register'),
    path('profile/', user_views.profile, name='profile'),
    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'),
    path('password-reset-complete/',
         auth_views.PasswordResetCompleteView.as_view(
             template_name='users/password_reset_complete.html'
         ),
         name='password_reset_complete'),
    path('', include('blog.urls')),
]

password_reset. html

{% extends "blog/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
    <div class="content-section">
        <form method="POST">
            {% csrf_token %}
            <fieldset class="form-group">
                <legend class="border-bottom mb-4">Reset Password</legend>
                {{ form|crispy }}
            </fieldset>
            <div class="form-group">
                <button class="btn btn-outline-info" type="submit">Request Password Reset</button>
            </div>
        </form>
    </div>
{% endblock content %}

password_reset_done. html

{% extends "blog/base.html" %}
{% block content %}
    <div class="alert alert-info">
        An email has been sent with instructions to reset your password
    </div>
{% endblock content %}

password_reset_confirm. html

{% extends "blog/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
    <div class="content-section">
        <form method="POST">
            {% csrf_token %}
            <fieldset class="form-group">
                <legend class="border-bottom mb-4">Reset Password</legend>
                {{ form|crispy }}
            </fieldset>
            <div class="form-group">
                <button class="btn btn-outline-info" type="submit">Reset Password</button>
            </div>
        </form>
    </div>
{% endblock content %}

password_reset_complete. html

{% extends "blog/base.html" %}
{% block content %}
    <div class="alert alert-info">
        Your password has been set.
    </div>
    <a href="{% url 'login' %}">Sign In Here</a>
{% endblock content %}

Пожалуйста, прокомментируйте, если мне нужно добавить больше деталей. Пожалуйста, дайте мне знать, почему мой код не работает? что еще мне нужно сделать?

1 Ответ

0 голосов
/ 22 февраля 2020

Сначала я бы протестировал ваши настройки электронной почты с помощью простого тестового письма Доку . На моем сервере я установил следующие переменные в файле settings.py:

  • EMAIL_HOST,
  • EMAIL_PORT,
  • EMAIL_HOST_USER
  • EMAIL_HOST_PASSWORD
  • EMAIL_USE_TLS
...