Django – отличный фреймворк для создания сайтов, и сегодня мы попробуем создать небольшой сайт с его помощью. Создадим веб-ресурс, который будет выводить «Hello World» на главную страницу. В общем, сделаем то, что делается обычно начинающими разработчиками в первую очередь. Подобные программы уже стали классикой.
Начальный сет-ап программы на Django
В первую очередь, необходимо открыть новую папку. Так, возможно создание директории helloworld на рабочем столе, воспользовавшись такими инструкциями.
$ cd ~/Desktop
$ mkdir helloworld && cd helloworld
Необходимо удостовериться, что в данный момент вас нет ни в какой виртуальной среде, которая может быть. В качестве подсказки здесь могут выступать скобки, которые находятся перед символом доллара ($). Чтобы выйти из окружения, необходимо набрать exit, а затем кликнуть на клавишу Enter. Если после этого скобки пропадут, это говорит о том, что получилось деактивировать виртуальное окружение.
Чтобы создать новое виртуальное окружение, нам необходимо использовать pipenv, после чего установить Django и активировать его.
$ pipenv install django==3.0.*
$ pipenv shell
Если вы владелец компьютера, на котором установлена операционная система Ubuntu, то подтверждение внесенных коррективов можно увидеть непосредственно в данный момент – (helloworld). Название папки здесь взято в скобки и располагается в строке перед командой.
Жаль, что людям, которые пользуются Windows, ничего не получится сделать для того, чтобы наглядно увидеть подтверждение активации.
Давайте создадим новый проект, который будет называться helloworld_project. В конце команды поставим точку, благодаря чему проект будет загружен в ту папку, которая открыта нами на предыдущем этапе.
(helloworld) $ django-admin startproject helloworld_project .
Далее воспользуйтесь инструкцией tree, чтобы посмотреть на структуру проекта, который мы создаем с помощью фреймворка Django. Если эта команда не сработала, то можно попробовать добиться той же цели с помощью команды sudo apt install tree.
(helloworld) $ tree
.
├── Pipfile
├── Pipfile.lock
├── helloworld_project
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
└── manage.py
1 directory, 7 files
Файл settings.py осуществляет контроль параметров проекта, urls.py говорить Django, какие страницы необходимо генерировать после того, как поступит запрос от браузера либо URL-адреса. А файл wsgi.py расшифровывается, как Web Server Gateway Interface. С помощью этого файла мы можем выполнять целый спектр команд Django, включая запуск локального веб-сервера либо создание новой программы.
Django комплектуется встроенным локальным веб-сервером, запустить который возможно с использованием команды runserver.
(helloworld) $ python manage.py runserver
После того, как мы перейдем по адресу http://127.0.0.1:8000 перед нами появится такая страница.
Учтите, что в полном результате вывода нам предоставят дополнительные сведения, в том числе и предупреждение о непримененных миграциях.
Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions. Run 'python manage.py migrate' to apply them. May 05, 2020 - 13:13:40 Django version 3.0.6, using settings 'helloworld_project.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
Поскольку все это сообщение на английском языке, то информация о непримененных миграциях начинается с фразы You have 17 unapplied migration(s).
Технически это предупреждение на данном этапе не оказывает влияние ни на что. Django говорит о том, что мы еще не «мигрировали» либо не была осуществлена конфигурация исходной базы данных. Тут не будет использоваться база данных, следовательно, на конечный итог это предупреждение никак не повлияет.
Тем не менее, мы можем удалить это предупреждение. Для этого необходимо нам остановить локальный сервер с помощью комбинации CTRL + C, после чего выполнить команду python manage.py migrate.
$ python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, sessions Running migrations: 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 sessions.0001_initial... OK
Тут Django выполняется миграция встроенных программ. Теперь, после того, как мы выполним команду python manage.py runserver будет отображен такой результат.
Watching for file changes with StatReloader Performing system checks... System check identified no issues (0 silenced). May 05, 2020 - 13:15:46 Django version 3.0.6, using settings 'helloworld_project.settings' Starting development server at http://127.0.0.1:8000/ Quit the server with CONTROL-C.
Как создать программу на Django 3?
Чтобы код остался аккуратным и читабельным, в Django используется концепт проектов и приложений. Приложения в рамках проекта оказывают влияние на производительность главного веб-приложения. Чтобы создать новую программу с помощью Django, необходимо воспользоваться командой startproject.
У действующего проекта Django для интернет-магазина доступен целый спектр различных приложений. Например, одно из них используется для входа пользователей в личный кабинет, второе – для оплаты покупок, а третье используется, чтобы оптимизировать отображение деталей продукции. Каждая программа сфокусирована на том, чтобы обеспечить требуемое функционирование изолированной области. Тем не менее, все три расположены внутри одного и того же проекта высшего уровня.
То, каким образом и когда осуществлять распределение функционала по приложениям, фактически являет собой субъективное понятие. Тем не менее, каждая программа должна иметь ясную функцию.
Пришло время для того, чтобы создать первую нашу программу. Для этого необходимо выйти из командной строки, воспользовавшись командой CTRL+C. После этого нужно ввести команду startapp, а далее включить название приложения. В случае с нашим примером, таким именем является pages.
(helloworld) $ python manage.py startapp pages
Если вы повторно посмотрите на структуру папок с помощью команды tree, то вы увидите, что Django была создана еще одна папка с названием pages, где размещены такие файлы.
(helloworld) $ tree
├── pages
│ ├── __init__.py
│ ├── admin.py
│ ├── apps.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
Посмотрим, за что каждый файл внутри папки отвечает.
- admin.py – это файл конфигурации для встроенного приложения панели администратора Django.
- apps.py – этот файл задает параметры конфигурации для самой программы.
- migrations – осуществляет отслеживание всех коррективов файла models.py. Следовательно, наша база данных будет постоянно обмениваться информацией с models.py.
- models.py определяет модели базы данных, которые автоматически переводятся в таблицы базы данных Django.
- tests.py необходим для осуществления тестов приложения.
- views.py – это место, где происходит обработка логических запросов и ответов веб-приложения.
Несмотря на то, что создаваемая нами программа есть внутри Django-проекта, сам фреймворк не имеет соответствующей информации. Поэтому надо его уведомить об этом. Для этого воспользуйтесь текстовым редактором, чтобы открыть в нем файл settings.py и там найдите пункт INSTALLED_APPS, под которым будут указываться шесть встроенных Django-приложений. После этого в самый низ добавьте приложение pages.
# helloworld_project/settings.py INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'pages.apps.PagesConfig', # новое приложение ]
Локальные программы всегда добавляются непосредственно в самый низ. Все потому, что Django задействуются настройки INSTALLED_APPS по направлению вниз. Что это означает? Сперва осуществляется загрузка внутреннего приложения admin, после этого auth, и далее по списку.
Необходимо, чтобы главные Django-приложения были доступными, поскольку созданные нами программы будут полагаться на их функционал.
Возможно, вам интересно, почему необходимо прописывать столь длинную строку pages.apps.PagesConfig. Ведь действительно, почему бы просто не добавить название приложения pages в список. А ответ на этот вопрос вы узнаете, когда прочитаете следующую часть нашего руководства. Пока потренируйтесь, чтобы закрепить полученные знания на практике.