- Визуальное описание функционала системы
- Описание используемого технологического стека и инструментов
- Описание сервисов, сущностей БД, и других артефактов проекта
- Описания архитектур системы физическая
- Описания архитектур системы логическая
- Описание решения с точки зрения безопасности
- Как захостить проект
Визуальное описание функционала системы
Описание используемого технологического стека и инструментов
Для разработки веб-приложений с использованием Django требуется следующий технологический стек и инструменты: | |
Django | Python-фреймворк высокого уровня, который облегчает создание веб-приложений. Django предоставляет мощные инструменты для управления базами данных, обработки URL-запросов, создания шаблонов и многое другое. |
JavaScript (JS) | Язык программирования, который используется для создания интерактивных элементов на стороне клиента веб-приложения. В связке с Django, JS может использоваться для добавления динамического поведения, отправки асинхронных запросов на сервер и взаимодействия с API. |
HTML | Язык разметки для определения структуры веб-страницы. CSS: Язык таблиц стилей для оформления внешнего вида элементов на веб-странице. |
Cython | Инструмент для ускорения функций, написанных на Python. Request: Библиотека для выполнения запросов с сайта hh. |
Beautiful Soup4 (bs4) | Библиотека для парсинга HTML и XML. django-environ: Модуль для управления настройками Django из переменных окружения. |
Описание сервисов, сущностей БД, и других артефактов проекта
django.contrib.admin | Это административный интерфейс Django, который предоставляет удобный способ управления моделями и данными в базе данных. Включает модель LogEntry для отслеживания действий пользователей. |
django.contrib.auth | Этот сервис обеспечивает аутентификацию и авторизацию пользователей. Включает модели AbstractUser, Permission, Group и User для управления пользователями, разрешениями и группами. |
django.contrib.contenttypes | Сервис, который обеспечивает отслеживание типов контента в приложениях Django. Включает модель ContentType для хранения информации о типах моделей. |
django.contrib.sessions | Этот сервис отвечает за управление сеансами пользователей и хранение данных сеансов. Включает модели AbstractBaseSession и Session |
jobportal | Сервис, разработанный в проекте jobportal. Включает модель UserProfile для хранения профилей пользователей и их ролей. |
Модель | Описание |
LogEntry | Хранит информацию о действиях пользователей в административном интерфейсе. Содержит поля id, content_type, user, action_flag, action_time, change_message, object_id и object_repr. Связана с моделями User и ContentType через внешние ключи. |
AbstractUser | Абстрактная модель, которая представляет пользователей. Включает поля date_joined, email, first_name, is_active, is_staff, is_superuser, last_login, last_name, password и username. Наследуется от моделей AbstractBaseUser и PermissionsMixin. |
Permission | Представляет разрешения, которые могут быть назначены пользователям или группам. Содержит поля id, content_type, codename и name. Связана с моделью ContentType через внешний ключ |
Group | Представляет группы пользователей. Содержит поля id и name. Связана с моделью Permission через поле permissions (ManyToManyField) |
МUser | Представляет пользователей. Содержит поля id, date_joined, email, first_name, is_active, is_staff, is_superuser, last_login, last_name, password и username. Связана с моделями Group и Permission через соответствующие поля (ManyToManyField). Наследуется от модели AbstractUser. |
ContentType | Хранит информацию о типах моделей. Содержит поля id, app_label и model. |
AbstractBaseSession | Абстрактная модель, представляющая базовую информацию о с, truncated for brevity. пользовательской сессии. Содержит поля session_key, session_data, expire_date и session_id. |
Session | Представляет конкретную пользовательскую сессию. Содержит поля session_key, session_data, expire_date и session_id. Наследуется от модели AbstractBaseSession. |
UserProfile | Модель Хранит информацию о профилях пользователей и их ролях. Содержит поля id, user, role и bio. Связана с моделью User через внешний ключ. |
Шаблоны (templates) | Файлы, содержащие HTML-код с вставками динамических данных, используемые для отображения пользовательского интерфейса. |
URL-шаблоны (urls) | Файлы, которые связывают URL-адреса с соответствующими представлениями. |
Формы (forms) | которые определяют поля и правила валидации для пользовательского ввода. |
Статические файлы (static) | Ресурсы, такие как CSS-стили, JavaScript-скрипты, изображения, используемые в пользовательском интерфейсе. |
Миграции (migrations) | Файлы, которые описывают изменения структуры базы данных, создаваемые и применяемые с помощью Django ORM. |
Конфигурационные файлы (settings) | Файлы, которые содержат настройки проекта, такие как база данных, аутентификация, статические файлы и другие параметры. |
Административный интерфейс | Интерфейс, предоставляемый Django для управления моделями и данными в административной панели. |
Это лишь некоторые из основных сервисов, сущностей БД и артефактов проекта, которые могут присутствовать в Django-приложении. Реальный проект может содержать и другие компоненты в зависимости от его специфики и требований. |
Описания архитектур системы физическая
Физическая архитектура системы определяет физическое размещение компонентов и ресурсов системы. | |
Клиентские устройства | Компьютеры, мобильные устройства или другие устройства, на которых пользователи взаимодействуют с сервисом через веб-браузер или веб сайт |
Веб-сервер | Сервер, который принимает запросы от клиентских устройств через протокол HTTP или HTTPS. Веб-сервер обрабатывает эти запросы и передает их в приложение Django для дальнейшей обработки |
Django-приложение | Это ядро системы, которое содержит бизнес-логику, модели данных, представления и шаблоны. Django-приложение выполняет обработку запросов, взаимодействует с базой данных, формирует и возвращает ответы клиентским устройствам. |
База данных | Django-приложение взаимодействует с базой данных для сохранения и извлечения данных. База данных может быть размещена на отдельном сервере или использовать облачные сервисы баз данных, такие как Amazon RDS или Google Cloud SQL. |
Системы хранения файлов | Для хранения и обработки файлов, таких как загружаемые пользовательские изображения или документы, может использоваться отдельное хранилище файлов, такое как Amazon S3 или Google Cloud Storage |
Внешние сервисы | В приложении могут быть интегрированы внешние сервисы, такие как платежные системы, системы уведомлений или сервисы аутентификации через социальные сети. Взаимодействие с этими сервисами может осуществляться через API. |
Описания архитектур системы логическая
Логическая архитектура системы определяет структуру и организацию компонентов и модулей приложения. Это общая логическая архитектура Django-приложения, которая основана на шаблоне проектирования MVC (Model-View-Controller). | |
Клиентские устройства | Модель представляет данные и бизнес-логику системы. Она определяет структуру и отношения между данными, а также методы для работы с этими данными. Модель в Django обычно представляется в виде классов Python, которые наследуются от базового класса модели Django |
Представление (View) | Представление определяет, как данные из модели будут отображаться пользователю. Оно обрабатывает запросы от клиентских устройств, получает данные из модели, выполняет необходимую обработку и форматирование данных и передает их в шаблон для отображения. |
Шаблон (Template) | Шаблон содержит HTML-код с вставками динамических данных. Он определяет, как данные будут отображаться пользователю. В шаблоне можно использовать переменные и управляющие конструкции для динамического формирования контента. |
URL-маршрутизация | Django использует URL-шаблоны для связывания URL-адресов с соответствующими представлениями. URL-маршрутизация определяет, какой код будет выполнен при обращении к определенному URL-адресу |
Формы (Forms) | Django предоставляет инструменты для создания и обработки веб-форм. Формы используются для сбора данных от пользователей и их валидации перед сохранением в базе данных. |
Сервисы и утилиты | В приложении могут быть определены дополнительные службы и утилиты, которые выполняют специфические задачи, такие как отправка электронной почты, взаимодействие с API сторонних сервисов и другие. |
Описание решения с точки зрения безопасности
Для обеспечения безопасности при разработке проекта, было уделено внимание следующим аспектам | |
Аутентификация и авторизация пользователей | Были использованы механизмы django для аутентификации и авторизации пользователей. Также хранения было осуществлено используя hash-функции для защиты от атак, таких как перебор паролей или словарные атаки |
Защита от атак | Для обеспечения безопасности используется защита от атак, таких как XSS (межсайтовый скриптинг) и CSRF (межсайтовая подделка запроса). Для этого используется Django Forms и Django Templates, чтобы защитить приложение от XSS. Также используется Django CSRF, чтобы предотвратить CSRF-атаки. |
Следование принципам безопасности разработки ПО | А также используется строго типизированный язык программирования для предотвращения ошибок типизации в коде, которые могут привести к уязвимостям. |
Как захостить проект
- Запустить скрипт
compile_pars.ps1
(для этого нужно открыть PowerShell и ввести.\compile_pars.ps1
). - Создать файл .env
New-Item -Path .env -ItemType file
и внести в него свои данные по примеру .env.example. - Запуск
python manage.py runserver
- Использовать makefile, для этого нужно ввести в терминале
make build
- Создать файл .env (
touch .env
) по примеру .env.example. внеся в него свои данные. - Запуск
make run
- Создать файл .env по примеру .env.example. внеся в него свои данные.
- Запустите
docker-compose build
- Запуск
docker-compose up