Джанго. Один проект. Отдельные системы авторизации и шаблоны для разных приложений
У меня есть проект со следующей структурой:
- main_app
- accounts_app (хранит модель CustomUser)
- my_app1
- users_app (внутри my_app1)
- my_app2
- users_app (внутри my_app2)
Причина раздельного users_app
в том, что я хочу повторно использовать my_app1 и my_app2 в других проектах. Поэтому я хочу, чтобы они были настолько раздельными, насколько это возможно.
Я хочу иметь отдельную систему авторизации (пользовательская модель пользователя, регистрация, шаблоны, перенаправление входа/выхода и т.д.) для каждого приложения. Так, например, допустим, у меня есть my-app1 на url localhost:8000/my-app1/
. Это означает, что регистрация будет происходить по адресу /my-app1/signup/
, вход в систему по адресу /my-app1/login/
, а перенаправление входа в систему будет происходить по адресу /my-app1/
Я также хочу использовать allauth в некоторых или всех приложениях. Вопросы:
- Имеет ли вообще смысл такая структура проекта? (да/нет)
- Возможно ли иметь отдельные шаблоны регистрации/сигнализации/etc для каждого приложения, использующего allauth? (да/нет - ссылка на документ?) Я не смог найти ответ на этот вопрос. .
- Как мне избежать конфликтов БД с миграциями при создании пользовательского пользователя для каждого приложения? Сейчас я наследую от AbstractUser в model.py каждого приложения, вот так:
class MainCustomUser(AbstractUser)
,class AppOneUser(AbstractUser)
,class AppTwoUser(AbstractUser)
Но это, похоже, не работает.
Ответы на эти вопросы послужат мне руководством в правильном направлении, сейчас я как бы немного запутался.
settings.py:
...
# django-allauth config
SITE_ID = 1
LOGIN_REDIRECT_URL = 'main_app:index'
ACCOUNT_LOGOUT_REDIRECT = 'main_app:index'
AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend',
)
...