Как работает Django

Прежде чем мы создадим наше первое веб-приложение Django, давайте немного рассмотрим, как работает Django под капотом. Проект Django описывает себя как MTV-фреймворк, использующий модели, шаблоны и представления. Давайте разберем эти компоненты:

  1. Часть модели имеет дело с данными и базами данных, она может получать, хранить и изменять данные в базе данных.
  2. Шаблон определяет, как данные выглядят на веб-странице.
  3. Представление описывает данные, которые должны быть представлены, и передает эту информацию шаблону.

После того, как основы компонентов объяснены, давайте разберемся, как они работают вместе, когда мы посещаем веб-сайт Django. Когда запрос приходит на веб-сервер, он передается Django, чтобы выяснить, что запрашивается. Клиент запрашивает URL, для примера возьмем codecademy.com, Django возьмет веб-адрес и передаст его своему urlresolver. Django попытается сопоставить URL со списком шаблонов, и если есть совпадение, то передаст запрос в соответствующую функцию представления.

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

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

Это немного упрощенная версия того, что Django делает под капотом, но ключевым моментом является то, что Django следует этой схеме MTV.

Запуск проекта Django
Теперь, когда у нас есть базовое понимание того, что такое Django и как он работает, давайте приступим к созданию проекта. Django предоставляет нам django-admin, утилиту командной строки, которая помогает нам решать различные административные задачи. Мы можем использовать ее с различными командами, вызывая ее в терминале следующим образом:

django-admin <command> [options]
Войти в полноэкранный режим Выйти из полноэкранного режима

Запуск команды django-admin help предоставит список возможных команд.

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

django-admin startproject projectname
Войти в полноэкранный режим Выйти из полноэкранного режима

В корневой папке проекта находится Python-файл manage.py, который содержит набор полезных функций, используемых для управления проектом. Этот файл выполняет те же действия, что и django-admin, но настроен специально для проекта. С его помощью мы можем выполнить ряд действий, например, запустить сервер.

Наряду с файлом manage.py есть еще один каталог с тем же именем, что и проект. Эта папка рассматривается как пакет Python из-за наличия init.py, и внутри этой директории содержатся важные настройки и конфигурационные файлы для проекта.

В этом упражнении мы запустим проект, а в следующем упражнении мы более подробно рассмотрим конкретные создаваемые файлы.

Настройка параметров Django
С помощью всего одной команды Django запустил функционирующий проект! За кулисами Django сделает все настройки за нас и сохранит их во внутреннем каталоге с тем же именем, что и проект. Важными для нас являются settings.py и urls.py. Остальные файлы мы можем спокойно игнорировать, только не забудьте не удалить их случайно!
settings.py — это Python-файл, содержащий конфигурации, которые мы будем редактировать на протяжении всей разработки нашего проекта. Внутри него есть список INSTALLED_APPS, который содержит приложения, составляющие проект Django, подробнее о них позже. После выполнения команды startproject наш settings.py должен содержать:

INSTALLED_APPS = [
  'django.contrib.admin',
  'django.contrib.auth',
  'django.contrib.contenttypes',
  'django.contrib.sessions',
  'django.contrib.messages',
  'django.contrib.staticfiles',
]
Войти в полноэкранный режим Выйти из полноэкранного режима

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

Далее в settings.py находится словарь под названием DATABASES. Он выглядит следующим образом:

DATABASES = {
  'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': BASE_DIR / 'db.sqlite3',
  }
}
Войти в полноэкранный режим Выйти из полноэкранного режима

Мы видим, что Django по умолчанию установит для нас базу данных SQLite. В последующих уроках мы узнаем, как использовать ее для хранения контента.

Далее, в том же каталоге, где находится settings.py, находится еще один Python-файл под названием urls.py. Внутри него находятся объявления URL для этого проекта Django, или «оглавление» для проекта Django. Помните, ранее мы говорили, что Django просматривает список шаблонов для поиска URL? Это и есть тот самый список!

Когда мы впервые создаем проект, urls.py будет содержать это:

urlpatterns = [
  path('admin/', admin.site.urls),
]
Войти в полноэкранный режим Выйти из полноэкранного режима

Это означает, что у приложения администратора уже есть маршрут.

Поскольку проект поставляется предварительно настроенным, мы можем запустить сервер для проверки работоспособности проекта. Сервер разработки можно запустить с помощью файла manage.py и команды runserver. Эта команда должна быть запущена в корневом каталоге, в том же каталоге, где находится manage.py. По умолчанию Django запускает сервер разработки с портом 8000, но в качестве опции можно указать альтернативный порт.

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

python3 manage.py runserver 
Войти в полноэкранный режим Выйти из полноэкранного режима

Сервер разработки Django будет перезагружаться по мере внесения изменений в проект, поэтому нам не придется постоянно перезапускать сервер в процессе разработки. Сервер будет работать до тех пор, пока мы не остановим его с помощью клавиш ctrl + c.

Примечание: Наша среда Codecademy Django должна запустить сервер разработки на порту 4001, указав опцию 0.0.0.0:4001 Этот порт специфичен для работы на Codecademy. Если вы хотите работать локально на своем компьютере, вы можете позволить Django установить порт по умолчанию для вас.

Оцените статью
Procodings.ru
Добавить комментарий