#python #django #email
Вопрос:
после сброса пароля я мгновенно перенаправляюсь на представление password_reset/done и не получаю электронное письмо. Я отправляю электронное письмо вручную, чтобы проверить, работает ли оно и все ли в порядке, поэтому проблема в » пути(‘password_reset/’, auth_views.PasswordResetView.as_view(success_url=reverse_lazy(‘профиль:password_reset_done’)), имя=’password_reset’), «, Это проблема с именем приложения или что-то в этом роде, я не могу найти какое-либо рабочее решение для этого
from django.urls import path, reverse_lazy
from .views import ProfileDetail, FollowUser, RegisterUser
from django.contrib.auth import views as auth_views
app_name = 'profile'
urlpatterns = [
path('<slug:slug>/profile/', ProfileDetail.as_view(), name='profile-details'),
path('follow/', FollowUser.as_view(), name='follow'),
path('register/', RegisterUser.as_view(), name='register'),
path('login/', auth_views.LoginView.as_view(template_name='registration/login.html'), name='login'),
path('logout/', auth_views.LogoutView.as_view(), name='logout'),
path('password_reset/', auth_views.PasswordResetView.as_view(success_url=reverse_lazy('profile:password_reset_done')), name='password_reset'),
path('password_reset/done/', auth_views.PasswordResetDoneView.as_view(), name='password_reset_done'),
path('reset/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(), name='password_reset_confirm'),
path('reset/done/', auth_views.PasswordResetCompleteView.as_view(), name='password_reset_complete'),
path('password_change/', auth_views.PasswordChangeView.as_view(), name='password_change'),
path('password_change/done/', auth_views.PasswordChangeDoneView.as_view(), name='password_change_done'),
]
основные URL-адреса:
from django.contrib import admin
from django.urls import path, include
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('post.urls', namespace='post')),
path('profile/', include('user_profile.urls', namespace='profile')),
]
if settings.DEBUG:
urlpatterns = static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
urlpatterns = static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
настройки конфигурации:
EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = '587'
EMAIL_USE_TLS = True
EMAIL_HOST_USER = ***
EMAIL_HOST_PASSWORD = ***
DEFAULT_FROM_EMAIL = EMAIL_HOST_USER
Комментарии:
1. Можете ли вы отправить электронное письмо одному и тому же пользователю из контекста django? docs.djangoproject.com/en/3.2/topics/email
2. Да, я отправил тестовое электронное письмо от shell и получил его нормально
3. Видите ли вы электронную почту в своей консоли, если вы установили
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
?4. Нет, я ничего не вижу, его мгновенное перенаправление на URL-адрес «password_reset_done» обычно занимает 3-5 секунд перед перенаправлением, и на этот раз его мгновенное
5. Я пока не могу комментировать, вы пытались установить разрешить менее безопасные приложения в настройках Gmail и проверить, не содержится ли это в спамах