3.2 KiB
3.2 KiB
Модель статьи
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 статьи, генерируется автоматически на основе названия статьи.
Сериализатор
- 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'указывает базовое имя для ссылок.
Контроллер
- ArticleView:
- Представление для работы с моделью статей.
- Использует
ModelViewSet, который предоставляет CRUD-функциональность и многое другое. - Включает методы
list,create,retrieve,update,destroyдля обработки соответствующих HTTP-запросов. - Содержит дополнительные действия (
favorite,feed) с использованием декоратора@action.get_permissions: Определяет разрешения для доступа к методам на основе типа действия.list: Получает список всех статей.create: Создает новую статью.favorite: Добавляет или удаляет статью из избранного.feed: Возвращает ленту статей для текущего пользователя.retrieve: Получает информацию о конкретной статье.update: Обновляет информацию о конкретной статье.destroy: Удаляет конкретную статью.