Создание сайта на Python/Django: запуск первого приложения
В прошлой публикации мы установили Django и настроили первый проект на нем. Пора переходить к более серьёзным моментам и начинать свое первое приложение, которое будет что-то выполнять, сохранять, выводить. Разработка сайтов процесс не простой, но очень интересный и увлекательный.
Создаем первое приложением в проекте на Django
Для создания нового приложения внутри проекта необходимо в терминале выполнить команду:
python manage.py startapp polls
Это создаст каталог polls внутри проекта, который содержит файлы приложения.
Пишем первый View
В Django View отвечает за сбор и обработку данных с целью последующего вывода или передачи в шаблон вывода. Для начала давайте поступим проще и создадим первый View который просто будет выводить некоторый приветственный текст и будем усложнять его уже по мере доработки приложения. Для этого скопируйте следующий код и вставьте его в файл polls/views.py:
from django.http import HttpResponse def index(request): return HttpResponse("Hello, world. You're at the polls index.")
Чтобы этой код заработал, нам необходимо создать файл urls.py и добавить в него код, который будет сообщать Django о том, какой View необходимо вызывать при вводе определенного адреса. Добавим в polls/urls.py следующий код:
from django.urls import path from . import views urlpatterns = [ path('', views.index, name='index'), ]
В данном случае мы настроили паттерн внутри самого приложения, но в проекте есть корневой обработчик URLconf, которому следует сообщить, что у нас в проекте есть приложение polls и необходимо включить его urlpatterns в обработку. Для этого в файл mysite/urls.py добавляем следующий код:
from django.contrib import admin from django.urls import include, path urlpatterns = [ path('polls/', include('polls.urls')), path('admin/', admin.site.urls), ]
Он включит информацию из polls.urls в обработку URLconfs и мы сможем обратится к приложению polls через браузер, указав “/polls/” после основного адреса. Давайте проверим это, запустив наш сервер и открыв ссылку http://127.0.0.1:8000/polls/. Если вы все сделали правильно, то должны увидеть в браузере текст, который был указан в HttpResponse():
Если нет, то смотрите на лог сервера в терминале и выясняйте, что пошло не так. Исправляйте ошибки, чтобы добиться нужного вывода.
Что произошло?
Возможно, вы не совсем поняли, что делает тот код, который мы добавили в наш проект выше. Давайте коротко разберем порядок его выполнения.
Корневой обработчик URL в Django анализирует файл mysite/urls.py на наличие паттернов для обработки. В нашем случае мы добавили функцию url() в которой в качестве параметров задали регулярное выражение для поиска совпадения запроса из браузерной строки. В данном случае это “/polls/”. Таким образом, определив, что в браузере был введен запрос типа “имя сайт.ком/polls/” дальнейшая обработка перенаправляется на polls.urls, т.е. urls.py из приложения polls.
В urls.py приложения polls мы создали паттерн, регулярное выражение которого соответствует любому запросу r’^$’. Как результат, независимо от того, что будет введено в строке браузера после “/polls/”, все запросы будут перенаправляться на View с именем index, который мы описали в файле views.py нашего приложения polls.
В результате обработки запроса будет вызвана функция index(request), которая в нашем случае всего лишь вернет HttpResponse(“Hello, world. You’re at the polls index.”), результатом которого будет вывод текста “Hello, world. You’re at the polls index.” в окне браузера.
Вот такое простое приложение в проекте на Django мы создали сегодня. Пока что оно не делает ничего серьезного, а просто выводит приветственный текст. Изначально это достаточно, чтобы понять, что на этом этапе все работает и можно приступать к усложнению функций нашего приложения, но об этом уже в следующей публикации – Создание сайта на Python/Django: настройка базы данных проекта.
Приятого кодинга на Python!