Использование Django all-auth в отдельном приложении: пути, не начинающиеся с 'accounts/', НЕ НАЙДЕНЫ 404

Я использую Django 3.2 и создаю отдельное приложение для регистрации и управления пользователями, которое использует django-allauth для обработки всех функций регистрации.

Структура каталога моего отдельного приложения выглядит следующим образом:

core
   /core
      settings.py
      urls.py
      # ...
   /django-myown-userprofile
      /userprofile
          models.py
          urls.py
          # ...
      myapp.tox
      setup.py
      setup.cfg
      # ...

core/core/urls.py

from django.urls import path, include

urlpatterns = [
   # ...
   path(user, include('userprofile.urls')),
   path(admin, admin.site.urls)
]

core/django-myown-userprofile/userprofile/urls.py

from django.urls import path, include

urlpatterns = [
   path('accounts', include('allauth.urls')),
   path('accounts/profile', ProfileView.as_view(), 'user-profile'),
   # ...
]

Когда я пытаюсь получить доступ к любой из конечных точек allauth (например):

http://localhost:8000/user/accounts/login

Я получаю ошибку 404 Not found. Похоже, что django-allauth ожидает, что путь будет иметь вид:

http://localhost:8000/accounts/...

Как мне изменить такое поведение django-allauth ?

Мне кажется, что вам не хватает косой черты / в вашем accounts пути в userprofile/urls.py:

from django.urls import path, include

urlpatterns = [
   path('accounts/', include('allauth.urls')),
   path('accounts/profile', ProfileView.as_view(), 'user-profile'),
   # ...
]

При этом все должно работать нормально. Убедитесь также, что переменные user и admin имеют строкоподобные значения, которые ссылаются на маршрут, заканчивающийся косой чертой. Хорошо быть последовательным с косой чертой. Вы можете добавить его к маршруту ProfileView, чтобы сохранить последовательность, но это не будет иметь большого значения.

Дополнительно следует помнить, что маршруты и имена, которые вы используете для ваших пользовательских представлений при определении urlpatterns, не должны перекрывать те, которые используются приложением accounts в django-allauth (см. https://github.com/pennersr/django-allauth/blob/master/allauth/account/urls.py для проверки маршрутов и имен, используемых представлениями django-allauth account). Надеюсь, это помогло!

Вернуться на верх