Установка виртуальной среды и зависимостей
python3.10 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Необходимо создать папку secrets в .venv
mkdir .venv/secrets
Поместить файл SECRET_KEY в .venv/secrets
И запустить приложение
python3.10 manage.py runserver
Личный блог со статьями и заметками.
Развиваясь в области Computer Science и Data science всё больше и больше появляется "рецептов", заметок, статей которые я создаю и сохраняю у себя локально на ноутбуке. Данный формат неудобен, так как не везде и не всегда у меня есть доступ к этим файлам.
Также я столкнулся с проблемой, что делиться своими наработками неудобно. Мои коллеги нередко обращаются ко мне за помощью, мне бывает проще скинуть материалы, которые полностью или частично решают проблему, если данные материалы были бы в открытом доступе, то делиться было бы проще.
Ещё возникает вопрос - почему этот сайт будет полезен не только для меня? Чем глубже я начинаю изучать какой-либо инструмент, тем меньше становится простых материалов, которые решают задачи, возникающие по мере применения/изучения инструментов, приходится читать тысячи строк документации, чтобы решать поставленные проблемы, я очень благодарен людям, которые ведут собственные блоги по программированию, так как они действительно помогают разобраться в решении возникающих задач. Поэтому мой сайт будет решать подобную проблему - помогать программистам, DevOps инженерам, начинающим системным архитекторам в изучении инструментов и решении конкретных задач.
Bzm Blog
Личные записи, статьи
- Таблица пользователей (user)
- Таблица категорий новостей (category)
- Таблица новостей (news)
Ограничения для полей title в news и name в category - 150 символов
Каждая запись может принадлежать только одной категории
- Администратор (auth_user | is_superuser == 1 ) - полные права, доступ к CMS
- Редактор(auth_user | is_superuser == 0 ) - возможность добавлять новые записи, нет доступа к CMS
Приложение для неавторизированного пользователя(not logged in) будет состоять из:
- Страницы ленты постов, где будет возможность фильтровать новости по категориям и кнопка для каждого поста, чтобы перейти к его полному описанию.
- Страница с формой для регистрации. Поля: Имя пользователя, email, пароль, подтверждение пароля.
- Страница с формой для авторизации. Поля: Имя пользователя, пароль.
- Шапка. Лого, кнопка "Зарегестрироваться", кнопка "Войти".
Приложение для авторизированного пользователя(logged in) будет состоять из:
- Страницы ленты постов, где будет возможность фильтровать новости по категориям и кнопка для каждого поста, чтобы перейти к его полному описанию.
- Страницы с формой добавления новости. Поля: Заголовок, текст, опубликовано(чек-бокс), категория(select). Кнопка добавить новость.
- Страница Feedback. Поля: Тема, текст, капча. Конопка отправить.
- Шапка. Лого, кнопка добавить новость, кнопка feedback, кнопка logout.
CMS сторона приложения будет доступна только для суперпользователя и будет состоять из:
- Главной страницы с приложениями Django и моделями для каждой. Список последних действий пользователя
- Страница для каждой модели со списком инстансов + строка поиска. Список - таблица состоит из атрибутов модели + чекбоксы для удобного массового изменения инстансов. Кнопки: добавить (имя модели).
- Страница редактирования для каждого инстанса, где есть возможность изменть любое поле, за исключением primary key. Кнопки: Сохранить и добавить другой объект, сохранить и продолжить редактирование, сохранить, история(переход на страницу с историей изменения инстанса), смотреть на сайте(открывает инстанс в развёрнутом виде на сайте).
- Шапка. Кнопки: открыть сайт, изменить пароль, выйти.
- Страница с формой для изменением пароля. Поля: Старый пароль, новый пароль, подтверждение нового пароля.
Тип запроса | URL | Описание |
---|---|---|
GET | /category/{p}/ | Получить страницу со списком новостей из категории с id == p |
GET | / | Получить главную страницу со всеми записями новостей, если их больше 5, то первые 5 |
GET | /register/ | Получить страницу с формой для регистрации |
POST | /register/ | Отправить форму для регистрации |
GET | /login/ | Получить страницу с формой для авторизации |
POST | /login/ | Отправить форму для авторизации |
Тип запроса | URL | Описание |
---|---|---|
GET | /logout/ | Выйти из учётной записи |
GET | /news/add-news/ | Получить страницу с формой для добавления новостей |
POST | /news/add-news/ | Отправить форму для добавления новостей |
GET | /category/{p}/ | Получить список новостей из категории с id == p |
GET | / | Получить главную страницу со всеми записями новостей, если их больше 5, то первые 5 |
GET | /feedback/ | Получить страницу с формой обратной связи |
POST | /feedback/ | Получить страницу с формой обратной связи |
Тип запроса | URL | Описание |
---|---|---|
GET | /admin/login/?next=/admin// | Получить страницу авторизации |
POST | /admin/login/?next=/admin// | Авторизироваться в CMS |
GET | /admin/ | Получить страницу CMS (управление контентом приложений News и Admin) + Последние действия пользователя |
GET | /admin/auth/user/ | Получить страницу CMS с таблицей всех пользователей. Фильтрация таблицы по статусу персонала (is_staff__exact={bool}), статусу суперпользователя(is_superuser__exact={bool}), по статусу активности (is_active__exact={bool}) |
GET | /admin/auth/user/{p}/change/ | Страница user-a с id == p |
GET | /admin/auth/user/{p}/history/ | История изменений профиля root user-а с id == p |
GET | /admin/auth/user/add/ | Страница добавления нового пользователя |
POST | /admin/auth/user/add/ | Отправить форму с добавлением нового пользователя |
GET | /admin/{news}/ | Список всех моделей для приложения "news". В данном проекте будет только одно Django приложение |
GET | /admin/{news}/{modelname} | Список всех объектов модели modelname(news |
GET | /admin/{news}/{news} | Список всех объектов модели news. Фильтрация таблицы по категориям(category__id__exact={category_id}), по статусу публикации (is_published__exact={bool}) |
GET | /admin/{news}/{modelname}/{p}/change/ | Получить страницу, чтобы изменить объект модели modelname c id==p |
POST | /admin/{news}/{modelname}/{p}/change/ | Изменить объект модели modelname c id==p |
POST | /admin/auth/user/add/ | Отправить форму с добавлением нового пользователя |
Python3.10
Django — фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC.
django-debug-toolbar — панель инструментов отладки Django
django-ckeditor — текстовый плагин django CMS, который обрабатывает текстовое содержимое.
Django Simple Captcha — джанго приложение для добавления капчи-изображения в любую форму Django.
Bootstrap — HTML, CSS и JS фреймворк для быстрого создания адаптивных дизайнов сайтов.
- Git
- GitHub
- VS Code
В данном проекте будет использоваться Django ORM совместно с базой данных SQLite
Unit тестирование с помощью библиотеки Django’s unit tests