/ssb

Simple Stupid Blog study app for Dmitry

Разработка блога StupidSimpleBlog

Порядок выполнения заданий

  1. Под каждое задание необходимо создавать отдельную ветку git checkout -b task-#, где # - номер задания

Важно: перед каждым созданием новой ветки задания, необходимо выполнить переход на ветку main: git checkout main

  1. После выполнения задания необходимо создать Pull request ветки задания с веткой main

Задание 1. Создание базового блога

  1. С помощью django-admin создать проект с именем config
  2. С помощью django-admin или manage.py создать приложение blog
  3. Создать 2 основных модели данных: article ( id - int, title - string, text - string, creation_date - datetime, tag - tag(категория) ) - статья, tag (id - int, title - название, parent - tag, nullable)
  4. Сделать страницы со списком статей, просмотром отдельных статей, созданием и изменением
  5. Добавить статьи и теги в админ панель

Задание 2. Авторизация

  1. Добавить авторизацию пользователей в блог
  2. Добавить в модель article поле author - user
  3. Разрешить возможность создания статей только авторизованным пользователям, а редактирование только авторам статей
  4. Сделать сортировку списка статей по убывания дат публикации (сначала новые)

Задание 3. Фильтры

  1. Добавить фильтр по категориям статей (множественный выбор)
  2. Добавить простой поиск по за головку статьи
  3. Добавить выборку по месяцу публицикации в рамках текущего года
  4. Добавить аналогичные фильтры в админ панель

Задание 5. Кастомизация авторизации

  1. Создать собственный класс пользователя( наследование от AbstractUser), который будет авторизоваться по электронной почте
  2. Сделать подтверждение регистрации по почте

Задание 6. REST api

  1. Сделать с помощью django-rest-framework обработчики:
  • GET /api/articles выдаёт список статей отсортированных по дате создания
  • GET /api/articles/[id] выдаёт статью с заданным id
  • GET /api/articles/tag/[slug] выдаёт статьи с заданным slug
  • GET /api/tags выдаёт список тегов
  1. Необходимо добавить поле slug типа slug в модель tag
  2. Настроить генерацию slug при создании новой категории Примечание: обмен данными производится в json (эндпоинт возвращает и принимает json)

Задание 7. Авторизация v2

  1. Добавить Http Basic авторизацию (вход с помощью апи)
  2. Сделать следующие endpoint:
  • POST /api/articles создаёт статью и возвращает её id
  • PUT /api/articles/[id] обновляет переданные поля в статье с id
  1. Ограничить доступ только авторизованным пользователям к данным эндпоинтам, обновлять статьи может только автор статьи