Сайт в активній розробці
Центральним моментом будь-якої веб-програми є обробка запиту, який надсилає користувач. Django за обробку запиту відповідають подання або views. По суті уявлення представляють функції обробки,
які приймають дані запиту як об'єкта HttpRequest з пакету django.http і генерують деякий результат, який потім відправляється користувачеві.
За промовчанням подання розміщуються у програмі у файлі views.py.
Наприклад, візьмемо стандартний проект, до якого додано програму (наприклад, проект створений у минулому розділі).
При створенні нового проекту файл 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),
]
Змінна urlpatterns визначає набір зіставлень функцій обробки з певними рядками запиту. Наприклад, запит до кореня веб-сайту буде оброблятися функцією index, запит на адресу "about" буде оброблятися функцією about, а запит "contact" - функцією contact.
Запустимо проект і звернемося на деякі з цих адрес.
При цьому ми можемо відправляти не простий текст, а, наприклад, код 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: