Ваш первый "серьезный" проект Django будет состоять из приложения для ведения блога.
Давайте повторим все что делали до этого. Мы начнем с создания проекта Django и приложения для ведения блога. Затем создадим модели данных и синхронизируем их с базой данных. Django предоставляет команду, которая позволяет создавать изначальную файловую структуру проекта.
А пока давайте еще раз пройдемся по проектам и приложениям. Давайте создадим проект в PyCharm с именем mysite или установите Django и выполните следующую ниже команду в командной оболочке:
django-admin startproject mysite
Не забываем, что в бесплатной версии PyCharm нам необходимо добавить точку в конце. Она создаст проект Django с именем mysite. Во избежание конфликтов имен следует избегать именования проектов по имени встроенных модулей Python или Django.
Давайте взглянем на сгенерированную структуру проекта:
mysite/
├── manage.py
└── mysite/
├── __init__.py
├── asgi.py
├── settings.py
├── urls.py
└── wsgi.py
manage.py: это утилита командной строки, используемая для взаимодействия с проектом. Редактировать этот файл не требуется;
mysite/: это папка проекта на языке Python; пакет состоит из следующих ниже файлов:__init__.py: пустой файл, который сообщает Python, что каталогmysiteнужно трактовать как модуль Python;
asgi.py: конфигурация для выполнения проекта в качестве приложения, работающего по протоколу интерфейса шлюза асинхронного сервера (ASGI) с ASGI-совместимыми веб-серверами. ASGI – это новый стандарт Python для асинхронных веб-серверов и приложений;
settings.py: здесь указаны настроечные параметры и конфигурация проекта и содержатся изначальные параметры со значениями, используемыми по умолчанию;
urls.py: место, где располагаются ваши шаблоны URL-адресов. Каждый URL-адрес, который определен здесь, соотносится с представлением;
wsgi.py: конфигурация для выполнения проекта в качестве приложения, работающего по протоколу интерфейса шлюза веб-сервера (WSGI) с WSGI-совместимыми веб-серверами.
Применение первоначальных миграций базы данных:
Для того чтобы хранить данные, приложениям Django требуется база данных. Упомянутый выше файл settings.py содержит конфигурацию базы данных проекта в настроечном параметре DATABASES.
Изначально конфигурацией предусматривается использование базы данных SQLite3, если не указана иная. SQLite идет в комплекте с Python3 и может применяться в любом приложении Python.
SQLite – это облегченная база данных, которую можно использовать с Django для разработки.
Если вы планируете развернуть свое приложение в производственной среде, то вам следует использовать полнофункциональную базу данных, такую как PostgreSQL, MySQL или Oracle.
Более подробная информация о совместной работе базы данных с Django содержится по адресу https://docs.djangoproject.com/en/5.0/topics/install/#get-your-database-running.
Файл settings.py также содержит настроечный параметр INSTALLED_APPS со списком, содержащим распространенные приложения Django, которые добавляются в ваш проект по умолчанию.
Мы рассмотрим эти приложения позже в разделе «Настроечные параметры проекта». Приложения Django содержат модели данных, которые соотносятся с таблицами базы данных.
В разделе «Создание моделей данных блога» вы создадите свои собственные модели.
Для того чтобы завершить настройку проекта, необходимо создать таблицы, ассоциированные с моделями стандартных приложений Django, включенных в состав параметра INSTALLED_APPS. Django поставляется вместе с системой, которая помогает управлять миграциями баз данных.
Откройте командную оболочку и выполните следующие ниже команды:
python manage.py migrate
Вы увидите результат, который заканчивается следующими ниже строками:
Applying contenttypes.0001_initial...OK
Applying auth.0001_initial... OK
Applying admin.0001_initial... OK
Applying admin.0002_logentry_remove_auto_add... OK
Applying admin.0003_logentry_add_action_flag_choices... OK
Applying contenttypes.0002_remove_content_type_name... OK
Applying auth.0002_alter_permission_name_max_length... OK
Applying auth.0003_alter_user_email_max_length... OK
Applying auth.0004_alter_user_username_opts... OK
Applying auth.0005_alter_user_last_login_null... OK
Applying auth.0006_require_contenttypes_0002... OK
Applying auth.0007_alter_validators_add_error_messages... OK
Applying auth.0008_alter_user_username_max_length... OK
Applying auth.0009_alter_user_last_name_max_length... OK
Applying auth.0010_alter_group_name_max_length... OK
Applying auth.0011_update_proxy_permissions... OK
Applying auth.0012_alter_user_first_name_max_length... OK
Applying sessions.0001_initial... OK
Показанные выше строки – это применяемые веб-фреймворком Django миграции базы данных.
В результате применения изначальных настроек в базе данных создаются таблицы для приложений, перечисленных в настроечном параметре INSTALLED_APPS.
Подробнее о команде управления migrate можно узнать в разделе «Создание и применение миграций» данной главы.
Запуск и выполнение сервера разработки
Django идет в комплекте вместе с облегченным веб-сервером с целью быстрого выполнения вашего исходного кода без необходимости тратить время на настройку производственного сервера.
Во время работы сервера разработки он непрерывно проверяет наличие изменений в исходном коде. Он автоматически перезагружается, освобождая от необходимости перезагружать его вручную после изменения кода.
Однако есть случаи, когда он может не замечать некоторые действия, такие как добавление новых файлов в проект, поэтому в подобных случаях приходится перезапускать сервер вручную.
Запустите сервер разработки, набрав следующую ниже команду в командной оболочке:
python manage.py runserver
Вы должны увидеть что-то вроде этого:
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
February 18, 2024 - 07:39:00
Django version 5.0.2, using settings 'Course_FirstProject.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Теперь пройдите по URL-адресу http://127.0.0.1:8000/ в своем браузере. Вы должны увидеть страницу, на которой указано, что проект успешно выполняется, как показано на изображении:
Приведенный выше снимок экрана показывает, что Django работает. Если вы взглянете на свою консоль, то увидите выполняемый браузером запрос GET:
[01/Jan/2023 17:20:30] "GET / HTTP/1.1" 200 16351
Каждый HTTP-запрос регистрируется в консоли сервером разработки. Любая ошибка, возникающая во время работы сервера разработки, также будет появляться в консоли.
Сервер разработки можно выполнять на конкретно-прикладном хосте и порту, либо сообщать Django, что нужно загружать определенный настроечный файл, как показано ниже:
python manage.py runserver 127.0.0.1:8001 --settings=mysite.settings
Когда приходится иметь дело с несколькими средами, требующими разных конфигураций, то следует создавать настроечный файл отдельно для каждой среды.
Этот сервер предназначен только для разработки и не подходит для производственного использования.
Для того чтобы развернуть Django в производственной среде, необходимо его выполнять как приложение на основе WSGI с использованием такого веб-сервера, как Apache, Gunicorn или uWSGI, или же как приложение на основе ASGI с использованием такого сервера, как Daphne или Uvicorn.
Более подробная информация о том, как разворачивать Django с различными веб-серверами, находится на странице https://docs.djangoproject.com/en/5.0/howto/deployment/wsgi/.