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