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

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