This commit is contained in:
2024-05-14 11:39:33 +03:00
commit 2762ac794a
26 changed files with 1506 additions and 0 deletions

92
BACKEND/ACCOUNTS.md Normal file
View File

@@ -0,0 +1,92 @@
## Кортежи статуса пола
GENDER_CHOICES = (
('n', 'Не указано'),
('m', 'Мужчина'),
('f', 'Женщина'),
)
## Модель пользователя
1. **`first_name`** (CharField): Имя пользователя (до 60 символов).
2. **`last_name`** (CharField): Фамилия пользователя (до 60 символов).
3. `**gender**` (CharField): Пол пользователя (выбор из предустановленных значений).
4. **`email`** (EmailField): Адрес электронной почты пользователя (уникальный).
5. **`username`** (CharField): Никнейм пользователя (до 60 символов).
6. **`bio`** (TextField): О себе (опционально, многострочное поле).
7. **`image`** (URLField): Ссылка на аватар пользователя.
8. **`followers`** (ManyToManyField): Подписчики пользователя.
9. **`address`** (CharField): Адрес пользователя (до 255 символов, опционально).
10. **`date_joined`** (DateTimeField): Дата регистрации пользователя (автоматически).
11. **`last_updated`** (DateTimeField): Время последнего обновления профиля.
12. **`last_login`** (DateTimeField): Время последней авторизации.
13. **`status`** (BooleanField): Статус активности пользователя.
## Сериализатор
1. **UserSerializer**:
- `username` (CharField): Никнейм пользователя.
- `email` (EmailField): Адрес электронной почты пользователя.
- `password` (CharField): Пароль пользователя (только для записи).
- `first_name` (CharField): Имя пользователя.
- `last_name` (CharField): Фамилия пользователя.
- `gender` (ChoiceField): Пол пользователя (выбор из предустановленных значений).
- `bio` (TextField): Биография пользователя.
- `image` (URLField): URL-адрес аватара пользователя.
- `status` (BooleanField): Статус активности пользователя.
- Метод `create`: Создание нового пользователя с установкой пароля.
- Метод `update`: Обновление информации о пользователе, включая пароль.
- Дополнительно: Возвращает JWT-токен при аутентификации пользователя.
## Маршрутизатор
1. **`/users/login`**:
- URL для входа в учетную запись.
- Обрабатывается функцией `account_login` из модуля `views` в приложении `config.accounts`.
- Имеет имя `account-login` для ссылок и представлений.
2. **`/users`**:
- URL для регистрации новой учетной записи пользователя.
- Обрабатывается функцией `account_registration` из модуля `views` в приложении `config.accounts`.
- Имеет имя `account-registration` для ссылок и представлений.
3. **`/user`**:
- URL для получения информации о текущем пользователе.
- Обрабатывается классом `UserView` как представление, используя методы GET и PUT.
- Имеет имя `user-account` для ссылок и представлений.
4. **`/logout/`**:
- URL для выхода из учетной записи.
- Обрабатывается функцией `signout` из модуля `views` в приложении `config.accounts`.
- Имеет имя `logout` для ссылок и представлений.
5. **`/profiles/`**:
- URL для работы с профилями пользователей.
- Используется вместе с DefaultRouter, который автоматически создает CRUD-маршруты для профилей.
- Имеет имя `profiledetailview-list`, `profiledetailview-detail` и т.д. для ссылок и представлений.
## Контроллер (Views и API)
1. **`account_registration`**:
- URL: `/users/registration/` (POST)
- Описание: Регистрация новой учетной записи пользователя.
- Входные данные: JSON объект с данными пользователя.
- Выходные данные: JSON объект с данными зарегистрированного пользователя.
2. **`account_login`**:
- URL: `/users/login/` (POST)
- Описание: Вход пользователя в учетную запись.
- Входные данные: JSON объект с email и паролем пользователя.
- Выходные данные: JSON объект с данными пользователя и JWT-токеном для аутентификации.
3. **`UserView`**:
- URL: `/user/` (GET, PUT)
- Описание: Получение информации о текущем пользователе и обновление данных пользователя.
- GET: Получение данных пользователя.
- PUT: Обновление данных пользователя.
4. **`ProfileDetailView`**:
- URL: `/profiles/` (GET, POST, DELETE)
- Описание: Управление профилями пользователей.
- GET: Получение данных профиля пользователя по его имени пользователя (username).
- POST: Добавление пользователя в список подписчиков (followers) или удаление из него.
- DELETE: Удаление пользователя из списка подписчиков (followers).
5. **`signout`**:
- URL: `/logout/`
- Описание: Выход пользователя из учетной записи и перенаправление на главную страницу.