Представления и маршрутизация

Обработка запроса

Последнее обновление: 12.08.2022

Центральным моментом любого веб-приложения является обработка запроса, который отправляет пользователь. В Django за обработку запроса отвечают представления или views. По сути представления представляют функции обработки, которые принимают данные запроса в виде объекта HttpRequest из пакета django.http и генерируют некоторый результат, который затем отправляется пользователю.

По умолчанию представления размещаются в приложении в файле views.py.

Например, возьмем стандартный проект, в который добавлено приложение (например, проект созданный в прошлой главе).

Представления Views в приложении на Django и Python

При создании нового проекта файл views.py имеет следующее содержимое:

from django.shortcuts import render
# Create your views here.

Данный код пока никак не обрабатывает запросы, он только импортирует функцию render(), которая может использоваться для обработки.

Генерировать результат можно различными способами. Один из них представляет использование класса HttpResponse из пакета django.http, который позволяет отправить текстовое содержимое.

Так, изменим файл views.py следующим образом:

from django.http import HttpResponse
 
def index(request):
    return HttpResponse("Главная")

def about(request):
    return HttpResponse("О сайте")

def contact(request):
    return HttpResponse("Контакты")

В данном случае определены три функции, которые будут обрабатывать запросы. Каждая функция принимает в качестве параметра request объект HttpRequest, который хранит информацию о запросе. Однако в данном случае она нам не нужны, поэтому параметр никак не используется. Для генерации ответа в конструктор объекта HttpResponse передается некоторая строка. Это может быть в том числе и код html в виде строки.

Чтобы эти функции сопоставлялись с запросами, надо определить для них маршруты в проекте в файле urls.py. В частности, изменим этот файл следующим образом:

from django.urls import path
from hello import views

urlpatterns = [
    path('', views.index),
    path('about', views.about),
    path('contact', views.contact),
]
Обработка запроса в Django и Python

Переменная urlpatterns определяет набор сопоставлений функций обработки с определенными строками запроса. Например, запрос к корню веб-сайта будет обрабатываться функцией index, запрос по адресу "about" будет обрабатываться функцией about, а запрос "contact" - функцией contact.

Запустим проект и обратимся по некоторым из этих адресов.

Сопоставление запросов с функциями в Django и Python

При этом мы можем отправлять не простой текст, а, например, код html, который затем интерпретируется браузеромю. Так, изменим файл views.py следующим образом:

from django.http import HttpResponse
 
def index(request):
    return HttpResponse("<h2>Главная</h2>")

def about(request):
    return HttpResponse("<h2>О сайте</h2>")

def contact(request):
    return HttpResponse("<h2>Контакты</h2>")

Соответственно теперь браузер получит код html:

Обработка запросов и HttpResponse в Django и Python
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850