После долгих раздумий, я думаю, настройки allauth не работают так, как я ожидал от их имен, и, возможно, не работают как задумано.ACCOUNT_EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL не означает «перенаправление после входа пользователя».Тесты кода для user.is_authenticated (site-packages / allauth / account / adapter.py), которые в данном контексте, по-видимому, означают «была ли ссылка подтверждения действительной?».
ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION не работает навсе с аутентификацией токена, и в любом случае известно, что не работает, если сеанс изменился.Поэтому я думаю, что для него должно быть установлено значение «Ложь».
ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION = Ложь, кажется, иногда приветствуется, но не всегда, и я не выяснил, почему ...
Посмотрим, как email_confirm.HTML шаблон создан, я думаю, что успех всегда будет перенаправлять вас на ACCOUNT_EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL, а неудача будет держать вас на странице с нерабочей ссылкой, чтобы запросить новое электронное письмо с подтверждением.
Я не могу найти, когда ACCOUNT_EMAIL_CONFIR_UR_UR_URURURUSиспользовать, но установите его на домашней странице.
Возможно, я неправильно понял это, но у меня наконец-то есть какая-то рабочая установка.Это очень грязно, должен быть лучший способ сделать это, но сейчас я возьму все, что позволит мне двигаться дальше.Я закончил тем, что использовал несколько шаблонов allauth для управления аккаунтом, потому что я не могу заставить это работать с rest-auth.
Все еще есть проблема с ошибочными ссылками: в основном я вижу страницу шаблона с ее полезным сообщением,но иногда это просто показывает домашнюю страницу.Но, по крайней мере, это не основной поток и не катастрофа для пользователя.
settings.py: обратите внимание на запись шаблона DIRS для allauth, в противном случае мой пользовательский шаблон не используется
TEMPLATES = [
{
...
'DIRS': [os.path.join(BASE_DIR, 'templates'),
os.path.join(BASE_DIR, 'assets'),
os.path.join(BASE_DIR, 'templates', 'allauth')],
...
]
ACCOUNT_LOGIN_ON_EMAIL_CONFIRMATION = False
ACCOUNT_EMAIL_CONFIRMATION_ANONYMOUS_REDIRECT_URL = '/'
ACCOUNT_EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL = '/verified'
'Verified' - это маршрут в моем интерфейсе, который отображает подтверждающее сообщение и ссылку для входа в систему.
urls.py
from django.views.generic import TemplateView
urlpatterns = [
...
re_path(r'^rest-auth/registration/account-confirm-email/(?P<key>[-:\w]+)/$', confirm_email,
name='account_confirm_email'),
]
templates / account / email_confirm.html, изменен надайте рабочую ссылку на сбой
{% extends "account/base.html" %}
{% load i18n %}
{% load account %}
{% block head_title %}{% trans "Confirm E-mail Address" %}{% endblock %}
{% block content %}
<h1>{% trans "Confirm E-mail Address" %}</h1>
{% if confirmation %}
{% user_display confirmation.email_address.user as user_display %}
<p>{% blocktrans with confirmation.email_address.email as email %}Please confirm that <a href="mailto:{{ email }}">{{ email }}</a> is an e-mail address for user {{ user_display }}.{% endblocktrans %}</p>
<form method="post" action="{% url 'account_confirm_email' confirmation.key %}">
{% csrf_token %}
<button type="submit">{% trans 'Confirm' %}</button>
</form>
{% else %}
{% url 'account_email' as email_url %}
<p>{% blocktrans %}The email confirmation link expired or is invalid. Please <a href="/login/">login</a> and request a new confirmation email from your user account.{% endblocktrans %}</p>
{% endif %}
{% endblock %}