Git Product home page Git Product logo

bzm-blog's Introduction

Bzm_Blog

Запуск

Установка виртуальной среды и зависимостей

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)

Для каждого элемента данных - ограничения

image

Ограничения для полей title в news и name в category - 150 символов

Общие ограничения целостности

Каждая запись может принадлежать только одной категории

Пользовательские роли

  • Администратор (auth_user | is_superuser == 1 ) - полные права, доступ к CMS
  • Редактор(auth_user | is_superuser == 0 ) - возможность добавлять новые записи, нет доступа к CMS

UI / API

UI

Приложение для неавторизированного пользователя(not logged in) будет состоять из:

  1. Страницы ленты постов, где будет возможность фильтровать новости по категориям и кнопка для каждого поста, чтобы перейти к его полному описанию.
  2. Страница с формой для регистрации. Поля: Имя пользователя, email, пароль, подтверждение пароля.
  3. Страница с формой для авторизации. Поля: Имя пользователя, пароль.
  4. Шапка. Лого, кнопка "Зарегестрироваться", кнопка "Войти".

Приложение для авторизированного пользователя(logged in) будет состоять из:

  1. Страницы ленты постов, где будет возможность фильтровать новости по категориям и кнопка для каждого поста, чтобы перейти к его полному описанию.
  2. Страницы с формой добавления новости. Поля: Заголовок, текст, опубликовано(чек-бокс), категория(select). Кнопка добавить новость.
  3. Страница Feedback. Поля: Тема, текст, капча. Конопка отправить.
  4. Шапка. Лого, кнопка добавить новость, кнопка feedback, кнопка logout.

CMS сторона приложения будет доступна только для суперпользователя и будет состоять из:

  1. Главной страницы с приложениями Django и моделями для каждой. Список последних действий пользователя
  2. Страница для каждой модели со списком инстансов + строка поиска. Список - таблица состоит из атрибутов модели + чекбоксы для удобного массового изменения инстансов. Кнопки: добавить (имя модели).
  3. Страница редактирования для каждого инстанса, где есть возможность изменть любое поле, за исключением primary key. Кнопки: Сохранить и добавить другой объект, сохранить и продолжить редактирование, сохранить, история(переход на страницу с историей изменения инстанса), смотреть на сайте(открывает инстанс в развёрнутом виде на сайте).
  4. Шапка. Кнопки: открыть сайт, изменить пароль, выйти.
  5. Страница с формой для изменением пароля. Поля: Старый пароль, новый пароль, подтверждение нового пароля.

User API (not logged in)

Тип запроса URL Описание
GET /category/{p}/ Получить страницу со списком новостей из категории с id == p
GET / Получить главную страницу со всеми записями новостей, если их больше 5, то первые 5
GET /register/ Получить страницу с формой для регистрации
POST /register/ Отправить форму для регистрации
GET /login/ Получить страницу с формой для авторизации
POST /login/ Отправить форму для авторизации

User API (logged in)

Тип запроса URL Описание
GET /logout/ Выйти из учётной записи
GET /news/add-news/ Получить страницу с формой для добавления новостей
POST /news/add-news/ Отправить форму для добавления новостей
GET /category/{p}/ Получить список новостей из категории с id == p
GET / Получить главную страницу со всеми записями новостей, если их больше 5, то первые 5
GET /feedback/ Получить страницу с формой обратной связи
POST /feedback/ Получить страницу с формой обратной связи

CMS

Тип запроса 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

bzm-blog's People

Contributors

mark47b avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.