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

35
BACKEND/ARTICLES.md Normal file
View File

@@ -0,0 +1,35 @@
## Модель статьи
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**:
- Сериализатор для модели статей (Article).
- Поля: `slug`, `title`, `description`, `body`, `tagList`, `createdAt`, `updatedAt`, `favorited`, `favoritesCount`, `author`.
- `TaggitSerializer`: Используется для сериализации тегов статьи.
- Методы: `get_author`, `get_favorited`, `get_favoritesCount`, `create`, `update`.
## Маршрутизатор
- **`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`: Удаляет конкретную статью.