Учебный Django-проект для создания и управления рассылками.
Приложение позволяет создавать сообщения и клиентскую базу, формировать рассылки, отслеживать их состояние и вести журнал попыток отправки.
Проект также включает авторизацию пользователей, разграничение доступа, кеширование и планирование фоновых задач.
- регистрация и авторизация пользователей;
- управление клиентами рассылок;
- создание и редактирование сообщений;
- создание и управление рассылками;
- настройка периодичности отправки;
- управление статусами рассылок;
- журналирование попыток отправки;
- ограничение доступа к отдельным операциям через permissions;
- кеширование отдельных представлений;
- планирование задач;
- блог с подсчётом просмотров.
Основная бизнес-логика сосредоточена в приложении service.
Users
│
├── Clients
│
├── Messages
│
└── Mailings
│
├── Clients
├── Message
└── Mailing Logs
Модель рассылки связывает сообщение с набором клиентов и содержит параметры времени, периодичности и текущего статуса.
Для пользователей предусмотрены собственные permissions, позволяющие разделять доступ к просмотру и управлению рассылками.
Cource_django_6/
├── config/
├── service/
│ ├── migrations/
│ ├── templates/
│ ├── templatetags/
│ ├── cron.py
│ ├── forms.py
│ ├── models.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── users/
├── static/
├── media/
├── manage.py
├── poetry.lock
└── pyproject.toml
MailingMessage
Содержит тему и текст сообщения.
Client
Хранит данные клиентов, которым предназначены рассылки.
Mailing
Описывает настройки рассылки: дату и время, периодичность, статус, сообщение и список клиентов.
MailingLog
Хранит информацию о попытках выполнения рассылки и ответах почтового сервера.
Blog
Дополнительный раздел с публикациями и подсчётом просмотров.
В проекте используется авторизация пользователей Django.
Для отдельных операций с рассылками реализованы собственные permissions:
- просмотр рассылок;
- отключение рассылок.
Доступ к функциональности контролируется на уровне представлений.
Для повышения эффективности приложения используется кеширование отдельных представлений.
Проект также содержит механизм запуска запланированных задач для автоматизации работы с рассылками.
- Python
- Django
- Django ORM
- PostgreSQL
- Redis
- Django Cache Framework
- django-crontab
- Poetry
- HTML / CSS
В проекте практиковались:
- построение Django-приложения;
- работа с Django ORM;
- создание связанных моделей;
ForeignKeyиManyToManyField;- Class-Based Views;
- формы Django;
- authentication;
- custom permissions;
- кеширование;
- планирование фоновых задач;
- журналирование операций;
- организация проекта по приложениям.
Проект создавался как практика разработки Django-приложения с более сложной бизнес-логикой.
Основной акцент — переход от простого CRUD к приложению, в котором появляются пользователи, права доступа, связанные сущности, автоматизация задач и дополнительные инфраструктурные компоненты.
Этот проект занимает промежуточное место в моей backend-линии:
Django → ORM → Authentication → Permissions → Redis → Scheduled Tasks
Следующим этапом стали более комплексные приложения с PostgreSQL, Celery, Redis, платежами и Docker.
Ещё один шаг от учебного CRUD к приложению, где уже приходится думать не только о данных, но и о доступе, автоматизации и инфраструктуре.