Files
we_pro_dock/BACKEND/ACCOUNTS.md
2024-05-14 11:39:33 +03:00

92 lines
6.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## Кортежи статуса пола
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/`
- Описание: Выход пользователя из учетной записи и перенаправление на главную страницу.