17 месяцев назад я начал свою путь в бэкенд разработку Python. Но спустя время я начал сталкиваться со сложностями в обучении на своей платформе. Первые уроки давались легко, а потом начиналось что-то непонятное в буквальном смысле. Заучивание, записывание, практика одного урока - на это уходили дни. А уроков сотни.
Чтобы найти простое объяснение и понять 10 минутный урок, приходилось несколько часов серфить интернет и потеть над кодом, выявляя правильный путь исправления ошибок. Везде говорят, что в первую очередь нужно учиться искать информацию в интернет. Но сейчас, когда я изучаю Django, даже "перекурив" весь русскоязычный мануал, я не понял ничего. В каждом предложении нужно "гуглить" термины. В сотрудничестве с ИИ я попробовал дать простое объяснение, которое поймет даже первоклассник.
Я только учусь и курс Django пройден наполовину. Все это сделано для тех, у кого тоже возникли трудности.
Что такое джанго
Джанго - это специальный инструмент, который помогает разработчикам создавать веб-сайты и приложения. Он называется фреймворком, потому что предоставляет готовые инструменты и правила для работы с веб-сайтами.
Джанго нужен для того, чтобы упростить процесс разработки веб-сайта. Вместо того, чтобы создавать каждую часть сайта с нуля, разработчики могут использовать Джанго, чтобы получить уже готовые компоненты и функциональность.
Джанго имеет много полезных функций, которые помогают создавать веб-сайты:
Он позволяет создавать красивые и интерактивные страницы, которые пользователи могут видеть в своих браузерах.
Он облегчает работу с базой данных, где хранится информация о веб-сайте, такая как список товаров или информация о пользователях.
Он помогает обрабатывать запросы от пользователей и отправлять им нужную информацию.
Он имеет мощный административный интерфейс, который позволяет администраторам управлять содержимым веб-сайта без необходимости знать программирование.
Таким образом, Джанго помогает разработчикам создавать веб-сайты более быстро и эффективно, предоставляя им готовые инструменты и структуру работы. Он широко используется для создания различных веб-сайтов, таких как блоги, интернет-магазины и социальные сети.
Что такое проект джанго
Давай представим, что проект Django - это интернет-магазин, а приложения внутри этого проекта - это его различные части или функциональности.
Когда мы говорим о проекте Django, давай вообразим, что это сам интернет-магазин в целом. В нем мы можем купить товары и просмотреть информацию о них.
Теперь представьте, что у нас есть несколько разных приложений, которые делают разные вещи внутри этого интернет-магазина.
Одно из таких приложений может быть "Каталог товаров". Здесь мы можем просмотреть список всех товаров, их названия, изображения и цены. Это как книжка с полным списком товаров в магазине.
Еще одно приложение может быть "Корзина покупок". Здесь мы можем добавлять товары в нашу корзину, изменять количество товаров и видеть общую стоимость наших покупок. Это как корзина, в которой мы кладем товары, пока не решим купить их окончательно.
И еще одно приложение может быть "Оформление заказа". Здесь мы можем указать наш адрес доставки и подтвердить наш заказ. Это как заполнение специальной формы, чтобы магазин знал, куда доставить наши покупки.
Внутри каждого приложения у нас есть файлы, которые делают разные вещи:
У "Каталога товаров" есть файлы, которые описывают модели товаров (как они выглядят и что имеют), представления (как мы показываем список товаров пользователю) и шаблоны HTML (как страница с товарами выглядит).
У "Корзины покупок" также есть файлы, которые описывают модели корзины и элементов корзины, представления для добавления/удаления товаров из корзины и шаблоны HTML для отображения корзины.
У "Оформления заказа" есть файлы, которые описывают модели заказов и информации о доставке, представления для оформления заказа и шаблоны HTML для отображения формы оформления заказа.
Все эти файлы работают вместе, чтобы создать полноценный интернет-магазин. Они сообщаются друг с другом и используют функции Django, чтобы обрабатывать запросы пользователей и отображать нужные страницы.
Таким образом, проект Django - это целый интернет-магазин, а приложения - это его разные части, которые делают определенные задачи. Каждое приложение имеет свои файлы, которые описывают модели, представления и шаблоны, необходимые для работы этой части магазина.
От запроса до отрисовки страницы
Вот основные этапы и внутренние действия, которые происходят при обработке запроса и отрисовке страницы в Django:
Пользователь открывает браузер и вводит адрес веб-сайта (URL) в строке поиска.
Браузер отправляет запрос на сервер, где расположен веб-сайт.
Сервер получает этот запрос и передает его в Django.
Django получает запрос и смотрит на URL, чтобы понять, какая страница должна быть показана.
Django проверяет файл
urls.py
в своей структуре проекта, чтобы найти соответствующий URL-шаблон для этой страницы.Когда Django находит соответствующий URL-шаблон, он вызывает соответствующую функцию представления (view function).
Функция представления обрабатывает запрос и выполняет все необходимые действия, такие как получение данных из базы данных или выполнение бизнес-логики.
Если данные нужны для отображения страницы, Django может использовать модели данных и базу данных для извлечения этих данных.
Далее Django использует шаблон HTML, который соответствует этой странице, чтобы создать окончательную HTML-страницу.
Django заполняет шаблон данными, которые были получены из базы данных или обработаны функцией представления.
Окончательная HTML-страница готова и возвращается обратно на сервер.
Сервер отправляет эту HTML-страницу обратно в браузер пользователя.
Браузер получает HTML-страницу и начинает ее отображать, показывая пользователю содержимое страницы, такое как текст, изображения и ссылки.
Вот таким образом происходит процесс от запроса до отрисовки страницы в Django!
Структура стандартного простого проекта
Вот пример структуры файлов интернет-магазина в Django:
myshop/
├── manage.py
├── myshop/
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── catalog/
│ ├── migrations/
│ ├── __init__.py
│ ├── admin.py
│ ├── models.py
│ ├── views.py
│ └── templates/
│ └── catalog/
│ ├── product_list.html
│ └── product_detail.html
├── cart/
│ ├── __init__.py
│ ├── models.py
│ ├── views.py
│ └── templates/
│ └── cart/
│ └── cart.html
└── checkout/
├── __init__.py
├── models.py
├── views.py
└── templates/
└── checkout/
└── order_confirmation.html
Теперь давай объясню, за что отвечает каждый файл:
manage.py
: Это скрипт для управления Django проектом. Он позволяет выполнять различные команды, такие как запуск сервера или выполнение миграций базы данных.myshop/
(каталог): Это основной каталог проекта Django.__init__.py
: Пустой файл, который указывает на то, что эта директория является пакетом Python.settings.py
: Файл настроек проекта, содержащий информацию о базе данных, статических файлах, шаблонах и других параметрах.urls.py
: Файл URL‑маршрутов проекта, определяющий, какие представления (views) будут обрабатывать запросы для каждого URL‑адреса.wsgi.py
: Файл для настройки WSGI‑совместимого сервера (Web Server Gateway Interface), который позволяет запускать Django приложение на веб‑сервере.
catalog/
: Приложение «Каталог товаров».migrations/
: Директория, содержащая миграции базы данных, которые определяют структуру таблиц и схемы данных.__init__.py
: Пустой файл, указывающий на то, что эта директория является пакетом Python.admin.py
: Файл, определяющий административный интерфейс для управления товарами.models.py
: Файл, содержащий модели данных, такие как классы для товаров или категорий.views.py
: Файл, содержащий представления (views) для отображения страниц с товарами.templates/
: Директория, содержащая HTML‑шаблоны для визуального оформления страниц.
cart/
: Приложение «Корзина покупок».__init__.py
: Пустой файл, указывающий на то, что эта директория является пакетом Python.models.py
: Файл, содержащий модели данных, такие как классы для корзины покупок или элементов корзины.views.py
: Файл, содержащий представления (views) для добавления товаров в корзину, изменения количества и оформления заказа.templates/
: Директория, содержащая HTML‑шаблоны для визуального оформления страниц корзины.
checkout/
: Приложение «Оформление заказа» (продолжение).models.py
: Файл, содержащий модели данных, такие как классы для заказов или информации о доставке.views.py
: Файл, содержащий представления (views) для оформления заказа и подтверждения заказа.templates/
: Директория, содержащая HTML‑шаблоны для визуального оформления страниц оформления заказа.
Это лишь пример структуры интернет-магазина в Django, и в реальном проекте может быть больше файлов и каталогов, в зависимости от функциональности сайта.