Насколько я понимаю, ваша ошибка исходит от django-allauth
, а не от вашего проекта. Причина ошибки заключается в том, что вы не включили allauth.url
в свой основной urls.py
(подробнее об этом будет рассказано в следующем разделе).
Возможные решения
Первое решение
Добавьте allauth.urls
в ваш urls.py
:
urlpatterns = [
...
path('accounts/', include('allauth.urls')),
...
]
Второе решение
Если вы go глубоко погрузитесь в проблему, вы увидите, что ошибка говорит NoReverseMatch
error, что происходит, когда есть имя URL, которое не найдено в проекте ie account_login
. Теперь эта ошибка исходит из шаблона на allauth base template
.
Судя по вашему коду, эта ошибка возникает из-за этой строки: ( Я позволил себе проверить вашу кодовую базу github, так как она была с открытым исходным кодом. )
if not email_confirmation:
if queryset is None:
queryset = self.get_queryset()
try:
email_confirmation = queryset.get(key=key.lower())
except EmailConfirmation.DoesNotExist:
# A React/Vue Router Route will handle the failure scenario
return HttpResponseRedirect('/login/failure/') # <-- Here
Указывает на неправильный URL, который не существует в системе. Пожалуйста, отметьте django-rest-auth urls
.
Так что одним из исправлений здесь является предоставление здесь шаблона ответа с таким представлением:
# in accounts/api/urls.py
path('failure/', TemplateView.as_view(template_name='api_failure.html'))
Другое решение состоит в том, чтобы предоставить custom 404 template
следующим образом:
# accounts/api/views.py
def handler404(request, exception, template_name="your_custom_404.html"):
response = render_to_response(template_name)
response.status_code = 404
return response
# root urls.py
handler404 = 'accounts.api.views.handler404'