Программа курса:

1.1 - Как работает интернет и веб-сайты 1.2 - Краткий конспект по HTML 1.3 - Кратко о SQL
2.1 - Что такое Django? 2.2 - Основные принципы MVC 2.3 - Установка Django и создание проекта HelloWorld 2.4 - Диспетчер URL, часть 1. 2.5 - Диспетчер URL, часть 2. 2.6 - Шаблоны, часть 1. 2.7 - Шаблоны, часть 2. 2.8 - Введение в тестирование приложений
3.1 - Создание проекта, первые модели и админ-панель 3.2 - Модели в Django и их поля 3.3 - Первые ORM запросы CRUD 3.4 - Организация связей между таблицами 3.5 - Django ORM методы возвращающие QuerySet 3.6 - Django ORM методы которые не возвращают QuerySet 3.7 - Django ORM поисковые поля и агрегатные функции 3.8 - Views/Templates/URLs
4.1 - Формы в Django 4.2 - CRUD проект
5.1 - Создание проекта и приложения 5.2 - Создание моделей данных блога 5.3 - Сайт администрирования 5.4 - Работа с наборами запросов QuerySet и менеджерами 5.5 - Разработка представлений списка и детальной информации 5.6 - Создание шаблонов представлений 5.7 - Итоги работы
6.1 - Работа с URL 6.2 - Добавление постраничной разбивки 6.3 - Разработка представлений на основе классов 6.4 - Рекомендация постов по электронной почте 6.5 - Создание системы комментариев 6.6 - Добавление функциональности тегирования 6.7 - Извлечение постов по сходству 6.8 - Реализация конкретно-прикладных шаблонных тегов и фильтров 6.9 - Добавление карты сайта 6.10 - Установка базы данных PostgreSQL 6.11 - Добавление полнотекстового поиска в блог
7.1 - Введение в пользовательскую систему Django 7.2 - Использование системы аутентификации Django 7.3 - Доработки системы авторизации и регистрации добавление сессий 7.4 - Профили пользователей и пользовательские поля модели User 7.5 - Авторизация через социальные сети посредством OAuth 2.0 7.6 - Улучшаем дизайн блога с использованием Bootstrap 5 7.7 - Итоги работы
8.1 - Введение в REST API 8.2 - Django REST Framework на примере блога 8.3 - Сериализаторы 8.4 - Представления 8.5 - Фильтрация и поиск 8.6 - Пагинация 8.7 - Права доступа и токены в DRF 8.8 - Схемы и документация 8.9 - Итоги работы
9.1 - Покупка VPS, доменного имени, привязка DNS и настройка по SSH. 9.2 - Установка виртуального окружения Gunicorn и списка зависимостей 9.3 - Установка PostgreSQL, настройка и перенос БД 9.4 - Установка и настройка NGINX 9.5 - Получение SSL сертификата от Lets Encrypt и настройка HTTPS
10.1 - Начало работы, создание модели статей 10.2 - Создание древовидной модели категорий 10.3 - Представления на основе классов 10.4 - Работа с ListView, вывод списка статей 10.5 - Работа с DetailView, форматирование и обработка кириллицы в Slug 10.6 - Вывод дерева категорий, пагинация, добавление Bootstrap 5 10.7 - Оптимизация SQL запросов и установка Debug-Toolbar 10.8 - Профили пользователей. Модели и сигналы 10.9 - Профили пользователей. Представления и формы. 10.10 - Работа с CreateView. Добавление записей пользователями. 10.11 - Работа с UpdateView. Обновление записей пользователями. 10.12 - Использование миксинов в работе с представлениями Django 10.13 - Доработки системы авторизации и регистрации 10.14 - Итоги работы
11.1 - Создание древовидных комментариев 11.2 - Создание древовидных комментариев, добавление JavaScript 11.3 - Добавление функциональности тегирования 11.4 - Добавление ReCAPTCHA для форм 11.5 - Интеграция WYSIWYG-редактора, установка CKEditor 5 11.6 - Создание системы Like/Dislike 11.7 - Добавление RSS ленты для блога 11.8 - Кеширование и Middleware для получения статуса пользователей 11.9 - Свои шаблоны для страниц ошибок 403, 404 11.10 - Итоги работы

Проекты и приложения

 

В Django, проект и приложение — это две разные, но тесно связанные сущности. Они часто путаются, но понимание их различий критически важно для разработки масштабируемых и организованных веб-приложений.

Проект (Project):

Проект Django — это контейнер для одного или нескольких приложений Django. Он содержит настройки конфигурации для всего проекта (например, базы данных, пути к статическим файлам, установленные приложения и т.д.), а также файл manage.py, который используется для управления проектом (запуск сервера разработки, миграции базы данных и др.). В сущности это корневой каталог вашего проекта, который содержит все необходимые файлы для его работы как единого целого. Можно представить его как “зонтик”, под которым находятся отдельные приложения. Только один проект может существовать в одном каталоге.

Приложение (App):

Приложение Django — это модуль, который реализует определенную функциональность. Это могут быть модули для работы с блогом, каталогом товаров, системой авторизации пользователей и так далее. Каждое приложение имеет свою собственную структуру каталогов (модели, представления, шаблоны, формы, URL’ы, и т.д.) и является относительно независимым от других приложений. Одно приложение может быть использовано в нескольких разных проектах. Они предлагают модульность и переиспользование кода.

Вкратце: проект — это оболочка, приложение — это содержимое. Вы создаёте проект, а затем добавляете в него необходимые приложения для реализации функциональности вашего веб-приложения.


Создаем первое приложение

Django использует концепцию проектов и приложений, чтобы сохранить чистоту и читабельность кода. Один проект верхнего уровня Django может содержать несколько приложений.

Например, на сайте электронной коммерции может быть одно приложение для аутентификации пользователей, другое - для платежей, а третье - для обработки информации о товаре. Это три разных приложения, которые живут в рамках одного проекта верхнего уровня.

Как и когда вы разделите функциональность на приложения - вопрос субъективный, но в целом каждое приложение должно иметь четкую функцию.

Давайте создадим первое приложение Django. Для этого введем следующую команду.

Не забываем перед созданием приложения отключать сервер нажав Ctrl+C.

# Windows

python manage.py startapp blog

 

# macOS

python3 manage.py startapp blog

 


Она создаст базовую структуру приложения, которая будет выглядеть следующим образом:

Типичное приложение Django имеет несколько ключевых файлов, каждый из которых отвечает за определенную часть функциональности. Не все файлы обязательны, некоторые могут отсутствовать в зависимости от сложности приложения. Вот назначение основных файлов:

  • models.py: Здесь определяются модели данных приложения. Модели представляют собой структуры данных, которые хранятся в базе данных. Они описывают поля (например, имя, возраст, email) и их типы. Используется ORM (Object-Relational Mapper) Django для взаимодействия с базой данных на уровне Python, а не SQL.
  • views.py: Содержит представления (views). Представления — это функции, которые обрабатывают запросы пользователей и возвращают ответы. Они получают данные из моделей, обрабатывают их и передают в шаблоны для отображения пользователю.
  • urls.py: (Необязательный, создаётся вручную) Определяет URL-адреса приложения и сопоставляет их с соответствующими представлениями. Это файл маршрутизации, который связывает URL-адреса с функциями-представлениями.
  • forms.py: (Необязательный, создаётся вручную) Определяет формы, которые используются для сбора данных от пользователя. Формы помогают валидировать введенные данные и упрощают взаимодействие с пользователем.
  • tests.py: Содержит тесты для проверки корректности работы приложения. Написание тестов — важная часть разработки качественного программного обеспечения.
  • admin.py: Регистрирует модели в административном интерфейсе Django. Это позволяет управлять данными приложения через удобный веб-интерфейс.
  • apps.py:  Содержит конфигурацию приложения, например, имя приложения и его метку. Это полезно для больших проектов с множеством приложений.
  • migrations/ (каталог): Содержит файлы миграций базы данных. Миграции используются для отслеживания изменений в моделях и применения этих изменений к базе данных. Этот каталог создается автоматически при использовании команд makemigrations и migrate.
  • __init__.py: Пустой файл, который указывает Python на то, что это является пакетом (папка с кодом Python). Не содержит никакого кода.

Важно отметить, что это типичный набор файлов. В зависимости от конкретных требований проекта, могут быть добавлены другие файлы или каталоги. Например, могут потребоваться файлы для работы с API, обработкой изображений, или другими специализированными задачами.

Когда структура приложения готова, можно приступать к разработке представлений нашего приложения.

Перейти к следующему шагу

Возникли вопросы при прочтении лекции? Задайте вопрос в комментариях

Комментарии