Проверка адреса электронной почты Django All_auth / rest_auth с использованием HTTP GET-запроса - PullRequest
0 голосов
/ 06 июля 2019

Я использую Django all_auth и rest_auth для серверной службы приложения mobile . Я интегрировал API регистрации и входа, и все работает нормально.

Теперь я должен интегрировать логику проверки адреса электронной почты.

После регистрации (без соц. Связи) мне необходимо отправить электронное письмо со ссылкой, которую пользователь будет использовать для проверки вашей учетной записи.

Я добавил эти конфигурации в мои Django настройки:

ACCOUNT_EMAIL_VERIFICATION = 'mandatory'
SOCIALACCOUNT_EMAIL_VERIFICATION = 'none'

Также это прекрасно работает. Я могу получить электронное письмо после регистрации новой учетной записи. В полученном электронном письме у меня также есть ссылка для подтверждения учетной записи.

Я хотел бы получить подтверждение по электронной почте, когда пользователь просто щелкнет ссылку.

Итак, я хотел бы использовать только метод GET HTTP .

Я добавил, как предложено в документации, этот параметр также:

ACCOUNT_CONFIRM_EMAIL_ON_GET = True

Я использую этот URL, связанный с представлениями all_auth.

from allauth.account.views import ConfirmEmailView
url(r'^account-confirm-email/', ConfirmEmailView.as_view(), name='account_email_verification_sent'),
url(r'^account-confirm-email/(?P<key>[-:\w]+)/$', ConfirmEmailView.as_view(), name='account_confirm_email'),

Но, если я пытаюсь нажать на ссылку из полученного письма, я получаю эту ошибку:

KeyError at /account-confirm-email/NzU:1hjl8A:z5Riy8Bjv_h0zJQtoYKuTkKvRLk/
'key'

/allauth/account/views.py in get
            self.object = self.get_object() ...
▶ Local vars
/allauth/account/views.py in get_object
        key = self.kwargs['key'] ...
▶ Local vars

Это говорит о том, что этого параметра недостаточно, чтобы иметь возможность использовать проверку электронной почты с помощью метода GET.

Должен ли я переписать для этого пользовательское представление Django?

1 Ответ

0 голосов
/ 14 июля 2019

Похоже, вы используете один и тот же вид два раза, когда вам следует использовать другой класс представления.Следующее изменение должно исправить это:

from allauth.account.views import ConfirmEmailView, EmailVerificationSentView

# ...

url(
    r'^account-confirm-email/',
    EmailVerificationSentView.as_view(),  # This is changed
    name='account_email_verification_sent',
),
url(
    r'^account-confirm-email/(?P<key>[-:\w]+)/$',
    ConfirmEmailView.as_view(),
    name='account_confirm_email',
),

# ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...