- Под каждое задание необходимо создавать отдельную ветку
git checkout -b task-#
, где # - номер задания
Важно: перед каждым созданием новой ветки задания, необходимо выполнить переход на ветку main: git checkout main
- После выполнения задания необходимо создать Pull request ветки задания с веткой main
- С помощью django-admin создать проект с именем config
- С помощью django-admin или manage.py создать приложение blog
- Создать 2 основных модели данных: article ( id - int, title - string, text - string, creation_date - datetime, tag - tag(категория) ) - статья, tag (id - int, title - название, parent - tag, nullable)
- Сделать страницы со списком статей, просмотром отдельных статей, созданием и изменением
- Добавить статьи и теги в админ панель
- Добавить авторизацию пользователей в блог
- Добавить в модель article поле author - user
- Разрешить возможность создания статей только авторизованным пользователям, а редактирование только авторам статей
- Сделать сортировку списка статей по убывания дат публикации (сначала новые)
- Добавить фильтр по категориям статей (множественный выбор)
- Добавить простой поиск по за головку статьи
- Добавить выборку по месяцу публицикации в рамках текущего года
- Добавить аналогичные фильтры в админ панель
- Создать собственный класс пользователя( наследование от AbstractUser), который будет авторизоваться по электронной почте
- Сделать подтверждение регистрации по почте
- Сделать с помощью django-rest-framework обработчики:
- GET /api/articles выдаёт список статей отсортированных по дате создания
- GET /api/articles/[id] выдаёт статью с заданным id
- GET /api/articles/tag/[slug] выдаёт статьи с заданным slug
- GET /api/tags выдаёт список тегов
- Необходимо добавить поле slug типа slug в модель tag
- Настроить генерацию slug при создании новой категории Примечание: обмен данными производится в json (эндпоинт возвращает и принимает json)
- Добавить Http Basic авторизацию (вход с помощью апи)
- Сделать следующие endpoint:
- POST /api/articles создаёт статью и возвращает её id
- PUT /api/articles/[id] обновляет переданные поля в статье с id
- Ограничить доступ только авторизованным пользователям к данным эндпоинтам, обновлять статьи может только автор статьи