Что такое представление (view) в Django?

Ответ

В 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'),
]