проверка электронной почты пользователей с использованием django rest auth в качестве API отдыха - PullRequest
0 голосов
/ 02 ноября 2019

Я создаю rest API и использую Django-rest-auth и хочу проверить электронную почту пользователей. Все работает, пока я не нажму на ссылку, чтобы подтвердить электронную почту пользователя. раньше я получал сообщение об ошибке, но, в конце концов, исправил его, проблема заключалась в том, что исправление больше не приводило к успокоению.

Позже я нашел в документации идею, почему у меня возникла эта проблема https://django -rest-auth.readthedocs.io / en / latest / faq.html после поиска в Интернете я нашел некоторые исправления, которые до некоторой степени работали, НО электронная почта все еще не проверялась после нажатия на ссылку, хотя я не былполучаю ошибки, как раньше.

my settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.sites',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'rest_framework',
    'rest_framework.authtoken',
    'rest_auth',
    'rest_auth.registration',
    'allauth',
    'allauth.account',
    'allauth.socialaccount',
    'allauth.socialaccount.providers.google',
    'allauth.socialaccount.providers.facebook',
    'users',
]


ACCOUNT_USER_MODEL_USERNAME_FIELD = None
ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = False
ACCOUNT_AUTHENTICATION_METHOD = 'email'
ACCOUNT_UNIQUE_EMAIL = True
ACCOUNT_LOGOUT_ON_GET = True

ACCOUNT_EMAIL_CONFIRMATION_EXPIRE_DAYS = 1
ACCOUNT_EMAIL_VERIFICATION = "mandatory"
ACCOUNT_LOGIN_ATTEMPTS_LIMIT = 5
ACCOUNT_LOGIN_ATTEMPTS_TIMEOUT = 86400 # 1 day in seconds
ACCOUNT_LOGOUT_REDIRECT_URL ='/accounts/login/'
LOGIN_REDIRECT_URL = '/accounts/profile'
SOCIALACCOUNT_EMAIL_VERIFICATION = 'none'

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_PORT = 587
EMAIL_HOST_USER = 'test@gmail.com'
EMAIL_HOST_PASSWORD = 'test'
DEFAULT_FROM_EMAIL = 'test@gmail.com'
DEFAULT_TO_EMAIL = EMAIL_HOST_USER

EMAIL_CONFIRMATION_AUTHENTICATED_REDIRECT_URL = '/'

my urls.py

from django.contrib import admin
from django.urls import path, re_path
from django.conf.urls import url, include
from rest_auth.registration.views import VerifyEmailView, RegisterView

from users.api.views import null_view


urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^api/rest-auth/registration/account-email-verification-sent/', null_view, name='account_email_verification_sent'),
    url(r'^api/rest-auth/registration/account-confirm-email/', null_view, name='account_confirm_email'),
    url(r'^password-reset/confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$', null_view, name='password_reset_confirm'),


    url('api/rest-auth/', include('rest_auth.urls')),
    url('api/account/', include('users.api.urls')),
    url('api/rest-auth/registration/', include('rest_auth.registration.urls')),
]

импортированное представление

@api_view()
def null_view(request):
    return Response(status=status.HTTP_400_BAD_REQUEST)

Я получаю письмо, и по щелчку также получаю ответ null_view, но электронное письмо все еще не проверяется.

1 Ответ

2 голосов
/ 02 ноября 2019

Разве вы не должны передать запрос на проверку адреса электронной почты?

url(r'^api/rest-auth/registration/account-confirm-email/', VerifyEmailView.as_view(), name='account_confirm_email'),
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...