Django 5 для начинающих

Прогресс по курсу:  9/1004

5.1 Создание проекта и приложения
2 из 2 шагов пройдено

Ваш первый "серьезный" проект 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/.


  • Комментария
Будьте вежливы и соблюдайте наши принципы сообщества. Пожалуйста, не оставляйте решения и подсказки в комментариях, для этого есть отдельный форум.
Оставить комментарий
Комментарий закреплён

Понравилась задача, тест или урок? Поставьте лайк, поддержите курс. Ваша поддержка очень важна для нас.

Командная оболочка "Terminal" есть в открытом проекте, запустив там код "django-admin startproject mysite" создался проект внутри проекта "Cource_FourthProject". Это кажется неверным. Запустить командную оболочку до запуска проекта не вижу возможности. Все работает, но появились сомнения.

@Константин_Божедомов, Командная оболочка, это командная строка под виндовс. Вот кстати как просто в ней создавать проекты Django.

А вообще все работают в разных IDE, и не только в Pycharm, ктото и вообще без редактора кода)) И у нас в лекции же есть слово "или":

А пока давайте еще раз пройдемся по проектам и приложениям. Давайте создадим проект в PyCharm с именем mysite или установите Django и выполните следующую ниже команду в  командной оболочке:

что-то этот урок резко какой-то непонятный стал. cd mysite python manage.py migrate - вот это вообще непонятно. У меня на маке выходит ошибка [Errno 2] No such file or directory. Разве миграцию делают без создания приложения сперва? 

@Yernur_Satybaldiyev, а почему бы и нет? У Django более 10 встроенных таблиц, которые мы можем создавать и без приложений. А по поводу ошибки, это что-то с путями у вас, что питон не может запустить manage.py.

@Илья_Перминов, а вообще зачем мы делаем cd mysite? мы же ранее не проходили данный урок. Я создал проект mysite как обычно через New project в верхнем левом углу мака, дал название mysite и на этом как бы все. Дальше все идет не так. Или это какой-то другой тип проекта? 

@Yernur_Satybaldiyev, это для тех, кто работает не через PyCharm, а через консоль.

@Yernur_Satybaldiyev, вместо :
cd mysite python manage.py migrate

напишите:

cd mysite python3 manage.py migrate

@Yernur_Satybaldiyev, команда cd позваляет в терминале зайти в ту папку которую вы указали в данном случае mysite если она у вас есть конечно, вы с терминалом будете работать везде так что команды знать надо, сфера айти не простая!

пройдите курс по линокс или же погуглите команды терминала на маке!

Изменен No Name

ахахахах

Ваш первый "серьезный" проект Django будет состоять из приложения для ведения блога.

если бы это так было ахахха, я уже сколько всего переделал на Джанго и DRF  что не сосчитать аххахаха

@No_Name, Столько всего сделал, что решил вернуться к истокам заданий для "малышей",  как то не серьезно ...