Использование 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). Надеюсь, это помогло!