Ответ
В Django представление (view) — это вызываемый объект (функция или класс), который принимает веб-запрос и возвращает веб-ответ. Это ключевой компонент, где определяется бизнес-логика приложения.
Основная задача представления — обработать входящий HttpRequest
, выполнить необходимые действия (например, извлечь данные из базы, обработать форму) и сформировать HttpResponse
(например, HTML-страницу, JSON-ответ или перенаправление).
Существует два основных типа представлений:
1. Представления-функции (Function-Based Views, FBV) Это простейший вариант, обычная функция Python.
from django.http import HttpResponse
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = f"<html><body>It is now {now}.</body></html>"
return HttpResponse(html)
2. Представления-классы (Class-Based Views, CBV) Более структурированный и расширяемый подход. Методы класса обрабатывают разные HTTP-методы (get, post и т.д.).
from django.http import HttpResponse
from django.views import View
class MyView(View):
def get(self, request):
# Логика для обработки GET-запроса
return HttpResponse('This is a GET request')
def post(self, request):
# Логика для обработки POST-запроса
return HttpResponse('This is a POST request')
Представления связываются с URL-адресами в файле urls.py
:
from django.urls import path
from .views import current_datetime, MyView
urlpatterns = [
# Для FBV
path('time/', current_datetime, name='time'),
# Для CBV используется метод as_view()
path('my-view/', MyView.as_view(), name='my-view'),
]