Files
we_pro_dock/BACKEND/ARTICLES.md
2024-05-14 16:58:27 +03:00

40 lines
4.3 KiB
Markdown
Raw Permalink 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.
## Модель статьи
1.1. **`author`** (ForeignKey): Связывает поле с моделью пользователя, который создал статью.
2. **`title`** (CharField): Название статьи.
3. **`summary`** (TextField): Краткое описание статьи.
4. **`content`** (TextField): Полное содержание статьи.
5. **`created`** (DateTimeField): Дата и время создания статьи.
6. **`updated`** (DateTimeField): Дата и время последнего обновления статьи.
7. **`tags`** (TaggableManager): Поле для управления тегами, используется для категоризации статей.
8. **`favorites`** (ManyToManyField): Связь многие ко многим с моделью пользователя, используется для отслеживания избранных статей пользователей.
9. `**slug**` (SlugField): Уникальный идентификатор для URL статьи, генерируется автоматически на основе названия статьи.
## Сериализатор
1. **ArticleSerializer**:
- **`slug`:** (SlugField), уникальный идентификатор для URL статьи. Здесь он настроен как только для чтения (read-only).
- **`description`:** (CharField), отображает описание статьи и использует поле summary модели.
- **`body`:** (CharField), содержит полное содержание статьи и использует поле content модели.
- **`tagList`:** (TagListSerializerField), отображает теги статьи и использует поле tags модели. Он также настроен как только для чтения.
- **`createdAt`**(DateTimeField): с форматированием даты и времени в ISO 8601.
- `**updatedAt`**(DateTimeField): с форматированием даты и времени в ISO 8601.
- **`favorited` и `favoritesCount`** (SerializerMethodField): используются для получения информации о том, добавлена ли статья в избранное пользователем и сколько пользователей добавили эту статью в избранное соответственно.
- **`author`** (SerializerMethodField): с атрибутом read_only=True, который вызывает метод `get_author` для получения сериализованных данных об авторе статьи.
## Маршрутизатор
- **`article_router.register('articles', views.ArticleView, basename='articles')`**: Регистрация маршрута для представления `ArticleView` из `views.py` под именем 'articles'. `basename='articles'` указывает базовое имя для ссылок.
## Контроллер
1. ArticleView:
- Представление для работы с моделью статей.
- Использует `ModelViewSet`, который предоставляет CRUD-функциональность и многое другое.
- Включает методы `list`, `create`, `retrieve`, `update`, `destroy` для обработки соответствующих HTTP-запросов.
- Содержит дополнительные действия (`favorite`, `feed`) с использованием декоратора `@action`.
- `get_permissions`: Определяет разрешения для доступа к методам на основе типа действия.
- `list`: Получает список всех статей.
- `create`: Создает новую статью.
- `favorite`: Добавляет или удаляет статью из избранного.
- `feed`: Возвращает ленту статей для текущего пользователя.
- `retrieve`: Получает информацию о конкретной статье.
- `update`: Обновляет информацию о конкретной статье.
- `destroy`: Удаляет конкретную статью.