Создание сайта на 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():

Вывод первого Django View в браузереЕсли нет, то смотрите на лог сервера в терминале и выясняйте, что пошло не так. Исправляйте ошибки, чтобы добиться нужного вывода.

Что произошло?

Возможно, вы не совсем поняли, что делает тот код, который мы добавили в наш проект выше. Давайте коротко разберем порядок его выполнения.

Корневой обработчик 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!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.

%d такие блоггеры, как: