92 lines
6.4 KiB
Markdown
92 lines
6.4 KiB
Markdown
## Кортежи статуса пола
|
||
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/`
|
||
- Описание: Выход пользователя из учетной записи и перенаправление на главную страницу. |