Files
we_pro_dock/BACKEND/ARTICLES.md
2024-05-14 11:39:33 +03:00

3.2 KiB
Raw Blame History

Модель статьи

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: Удаляет конкретную статью.