NoReverseMatch: Обратное соответствие для 'account_confirm_email' не найдено. [dj-rest-auth].
Я новичок в Django. Я пытаюсь реализовать реактивную аутентификацию вместе с социальной аутентификацией.
Я следую этому руководству https://jkaylight.medium.com/django-rest-framework-authentication-with-dj-rest-auth-4d5e606cde4d
Я пытался реализовать то же самое, но не получается.
Я получаю эту ошибку:
django.urls.exceptions.NoReverseMatch: Не найдено обратное соответствие для 'account_confirm_email'. 'account_confirm_email' не является допустимой функцией представления или именем шаблона.
Уровень моего проекта urls.py
from drf_spectacular.views import (
SpectacularAPIView,
SpectacularSwaggerView
)
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
# path('account/', include('allauth.urls')),
path('admin/', admin.site.urls),
path('api/user/', include('user.urls')),
path('api/schema/', SpectacularAPIView.as_view(), name='api-schema'),
path(
'api/docs/',
SpectacularSwaggerView.as_view(url_name='api-schema'),
name='api-docs'
),
]
Мой уровень приложения urls.py
from django.urls import path, re_path
from dj_rest_auth.registration.views import RegisterView, VerifyEmailView, ConfirmEmailView
from dj_rest_auth.views import LoginView, LogoutView
from user import views
app_name = 'user'
urlpatterns = [
path('account-confirm-email/<str:key>/', ConfirmEmailView.as_view()),
path('register/', RegisterView.as_view()),
path('login/', LoginView.as_view()),
path('logout/', LogoutView.as_view()),
path('verify-email/',
VerifyEmailView.as_view(), name='rest_verify_email'),
path('account-confirm-email/',
VerifyEmailView.as_view(), name='account_email_verification_sent'),
re_path(r'^account-confirm-email/(?P<key>[-:\w]+)/$',
VerifyEmailView.as_view(), name='account_confirm_email'),
path('listusers/', views.ListUsers.as_view(), name='list-users'),
]
Когда я пытаюсь зарегистрировать пользователя. Это вызывает эту ошибку.
Я использую пакет dj-rest-auth для реализации аутентификации.
Для части регистрации вы должны использовать allauth
, который имеет некоторые встроенные интеграции с dj-rest-auth
Кроме того, вам придется добавить некоторые вещи в ваш settings.py
:
INSTALLED_APPS = [
"dj_rest_auth.registration",
"allauth",
"allauth.account"
]
AUTHENTICATION_BACKENDS = [
"allauth.account.auth_backends.AuthenticationBackend",
"django.contrib.auth.backends.ModelBackend",
]
добавьте эти URL в urls.py
:
urlpatterns = [
path("signup/", include("dj_rest_auth.registration.urls"))
path("verify-email/", VerifyEmailView.as_view(), name="rest_verify_email"),
path(
"account-confirm-email/",
VerifyEmailView.as_view(),
name="account_confirm_email_sent",
),
path(
"account-confirm-email/<key>/",
VerifyEmailView.as_view(),
name="account_confirm_email",
),
]
Запрос не получен <str:key>
. Пожалуйста, проверьте, где вы выполняете запрос. Это может быть из представления или шаблона.