Полноценный блог-проект с древовидными категориями, тегами, комментированием, рейтингами, авторизацией, подтверждением по email, CKEditor5, кешированием и Celery. Создан на основе Django CBV с чистой архитектурой, качественной ORM-оптимизацией и расширенной функциональностью.
- 🔗 Категории: Древовидная структура категорий с помощью
django-mptt - 📝 Статьи: Поддержка WYSIWYG-редактора (CKEditor5) для полей
descriptionиtext - 🏷️ Теги: Кастомная интеграция через
taggitс собственными моделями - 🧠 Комментарии: Древовидная система комментариев с поддержкой AJAX
- 👍👎 Рейтинг постов: лайки/дизлайки с учётом IP и/или пользователя
- 🧾 RSS лента: автообновляемая лента последних 5 записей
- 👤 Регистрация и авторизация: подтверждение email, remember me, редактирование профиля
- 🔐 reCAPTCHA: защита форм с помощью
django-recaptcha - ⚙️ Celery + Redis: асинхронная отправка email
- 🧠 Кеширование: file-based cache + middleware трекинг активности пользователей
- 💡 Полноценный фронт с JS: обработка лайков, комментариев, редактирования — всё через JS (fetch API)
| Категория | Технологии |
|---|---|
| Backend | Python, Django 5.0, Celery, Redis |
| Frontend | HTML, CSS, Bootstrap, JavaScript (AJAX), CKEditor5 |
| Базы данных | PostgreSQL / SQLite (настраивается через .env) |
| Кеширование | Django File-Based Cache |
| Расширения Django | django-mptt, taggit, django-ckeditor-5, django-recaptcha, debug-toolbar |
| Асинхронность | Celery + Redis |
| Безопасность | CSRF, капча, подтверждение email |
- Используется
TreeForeignKey(родительская категория) - Отображение и фильтрация по подкатегориям
- Админ-интерфейс через
django-mptt-admin
- Статусы:
published,draft - Слогификация заголовка
- Миниатюры через
ImageField - Модельный менеджер
PostManagerоптимизирует ORM-запросы (select_related,filter(status='published')) - Поиск постов по тэгам
- Кастомная модель
CustomTag, slug генерируется автоматически - Расширение
taggitчерезTaggableManager
- Построены с помощью
MPTTModel, имеютparent-связь - Добавление и редактирование комментариев реализовано через AJAX (
comments.js) - Отображение вложенной структуры
- Кнопки лайка и дизлайка
- AJAX-поддержка (
rating.js) - Уникальность по IP и посту
- Модельный менеджер
PostRatingManager(аннотацияSumпоratings__value)
- Email-верификация через Celery
- Асинхронная задача
send_verification_email_async - Использован
transaction.atomic()чтобы избежать частичных сохранений
LoginView,LogoutView,Remember meреализовано через управление сессиями и куками- Расширенные формы регистрации и логина
- Профиль пользователя: просмотр и редактирование
django.contrib.syndication.views.FeedLatestPostFeed: 5 последних постов по дате обновления
- Для удобства создания и редактирования статей реализован современный WYSIWYG-редактор — CKEditor 5. Подключён и настроен через библиотеку django-ckeditor-5.
- Редактор подключён к полям description (краткое описание) и text (полный текст статьи)
- Пользователю доступно форматирование текста, вставка изображений, списков и ссылок
- Конфигурация кастомизирована: toolbar, стили картинок и кастомный CSS
- Загруженные изображения автоматически сохраняются в uploads/
- File-based кэш: папка
cache/ - Middleware
ActiveUserMiddlewareобновляет last_login, кеширует активность
# Клонируйте репо
git clone https://github.com/wpotoke/blog-class-based-view.git
# Создайте и активируйте venv
python -m venv venv
venv\Scripts\activate
# Установить зависимости
pip install -r requirements.txt
cd blog_cbv
# Переменные окружения
# или настрой свой
# Выполнить миграции
python manage.py migrate
# Собрать статику
python manage.py collectstatic
# Запуск Redis
redis-server
# Запуск Celery
celery -A blog_cbv worker -l info
# Запустить сервер
python manage.py runserver- 🔎 Поиск по сайту (FullText или Elastic)
- 📦 API (Django Rest Framework)
- 📈 Метрики (через Prometheus + Grafana)
- 📩 Комментарии с автоуведомлением по email
- 🌍 i18n и локализация
Создан с любовью к Django ❤️ Разработчик: [Морозов Данила] Telegram - Морозов Данила







