Ответ
render
— это функция-сокращение (shortcut) в Django, предназначенная для отрисовки HTML-шаблона с данными (контекстом) и возврата готового объекта HttpResponse
.
Она автоматизирует стандартный процесс: загрузку шаблона, передачу в него контекста и формирование HTTP-ответа. Это самый распространенный способ вернуть HTML-страницу из представления (view).
Пример использования:
from django.shortcuts import render
def home_view(request):
# Данные, которые будут доступны в шаблоне
context = {
'title': 'Главная страница',
'items': ['Python', 'Django', 'FastAPI']
}
return render(request, 'main/home.html', context)
Что происходит "под капотом"?
Функция render
упрощает следующий код:
from django.http import HttpResponse
from django.template import loader
def home_view_manual(request):
template = loader.get_template('main/home.html')
context = {
'title': 'Главная страница',
'items': ['Python', 'Django', 'FastAPI']
}
# Важно передать request для работы контекстных процессоров (например, для CSRF-токена)
html_content = template.render(context, request)
return HttpResponse(html_content)
Ключевые преимущества render
:
- Краткость: Значительно сокращает шаблонный код.
- Контекст запроса: Автоматически использует
RequestContext
, что делает переменные из контекстных процессоров (например,user
,request
, CSRF-токен) доступными в шаблоне.