#django #django-rest-framework #django-allauth #django-rest-auth
#django #django-rest-framework #django-allauth #django-rest-auth
Вопрос:
Я пытаюсь протестировать свою конфигурацию сброса пароля на моем локальном хостинге, используя django-rest-auth. Проверка электронной почты и регистрация работают, и я могу вызвать событие сброса пароля и отправить электронное письмо, но электронное письмо содержит неправильный домен. Прямо сейчас он передает ссылку, содержащую my-site.com
домен 0.0.0.0:8000
, а не домен. Я запускаю приложение внутри контейнера docker, поэтому оно 0.0.0.0:8000
вместо 127.0.0.1:8000
.
Текущий результат:
You're receiving this email because you requested a password reset for your user account at My Site.
Please go to the following page and choose a new password:
http://my-site.com/auth/password-reset/confirm/OA/55d-7dc2614593146ac3ce82/
Your username, in case you've forgotten: testaccount
Thanks for using our site!
The My Site team
Ожидаемый результат
You're receiving this email because you requested a password reset for your user account at My Site.
Please go to the following page and choose a new password:
http://0.0.0.0:8000/auth/password-reset/confirm/OA/55d-7dc2614593146ac3ce82/
Your username, in case you've forgotten: testaccount
Thanks for using our site!
The My Site team
Мой URL-адрес для моей регистрации — это:
from django.urls import path, include
from allauth.account.views import ConfirmEmailView
from . import views
urlpatterns = [
path('registration/account-email-verification-sent/', views.null_view, name='account_email_verification_sent'),
path('registration/account-confirm-email/<key>', ConfirmEmailView.as_view(), name='account_confirm_email'),
path('registration/complete/', views.complete_view, name='account_confirm_complete'),
path('password-reset/confirm/(<uidb64>/<token>/', views.null_view, name='password_reset_confirm'),
path('', include('rest_auth.urls')),
path('registration/', include('rest_auth.registration.urls')),
]
Я наткнулся на другое сообщение, в котором предлагалось изменить идентификатор сайта, но я не уверен, что это правильно.
Как мне заставить его передавать текущий обслуживаемый домен вместо домена с идентификатором сайта?
Комментарии:
1. Где ваш
PasswordResetView
класс? Где он определен в вашем urls.py ?2. Разве это не включено в
django-allauth
представления? Яallauth.urls
включил в свойaccounts/
URL-адрес, который срабатывает, когда происходит сброс пароля, или, по крайней мере, я думаю, что это так.
Ответ №1:
Простое решение
Шаг 1: Перейдите /admin/sites/site/
, вы увидите что-то похожее на приведенное ниже,
Шаг 2: Отредактируйте существующую запись со следующим значением, затем сохраните ее
Имя домена: 0.0.0.0: 8000
Отображаемое имя: название вашего сайта
Комментарии:
1. Я добавил сайт, но он по-прежнему перенаправляет на первый сайт, а не на тот, который я только что добавил.
2. Добавлено или отредактировано?
3. Я только что добавил 0.0.0.0: 8000, но URL-адрес, отправленный при сбросе пароля, по-прежнему указывает на
my-site.com
.4. Да… Измените
SITE_ID=2
настройки в5. Дело в том, что Django использует
SITE_ID
значение в шаблоне сброса пароля