РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
201 of 307 menu

Метод TemplateResponse

Метод TemplateResponse применяется к объекту Jinja2Templates и формирует ответ на основе HTML-шаблона. Первым параметром передаётся объект Request, вторым - имя шаблона, третьим - словарь контекста с данными для подстановки в шаблон. Также можно передать параметры status_code, headers и media_type. Возвращается объект _TemplateResponse, который FastAPI отдаёт как HTML-страницу.

Синтаксис

templates.TemplateResponse( request, name, context, status_code=200, headers=None, media_type=None )

Пример

Давайте создадим шаблон и отдадим его по адресу '/'. Сначала файл шаблона:

<!DOCTYPE html> <html> <head> <title>Index</title> </head> <body> <p>{{ text }}</p> </body> </html>

Теперь приложение FastAPI:

from fastapi import FastAPI, Request from fastapi.templating import Jinja2Templates app = FastAPI() templates = Jinja2Templates(directory='templates') @app.get('/') def index(request: Request): return templates.TemplateResponse( request, 'index.html', {'text': 'hello'} )

Результат выполнения кода:

<!DOCTYPE html> <html> <head> <title>Index</title> </head> <body> <p>hello</p> </body> </html>

Пример

Давайте передадим в шаблон список и выведем его элементы:

<!DOCTYPE html> <html> <head> <title>Items</title> </head> <body> <ul> {% for item in items %} <li>{{ item }}</li> {% endfor %} </ul> </body> </html>

Теперь обработчик маршрута:

from fastapi import FastAPI, Request from fastapi.templating import Jinja2Templates app = FastAPI() templates = Jinja2Templates(directory='templates') @app.get('/items') def items(request: Request): return templates.TemplateResponse( request, 'items.html', {'items': ['a', 'b', 'c', 'd', 'e']} )

Результат выполнения кода:

<!DOCTYPE html> <html> <head> <title>Items</title> </head> <body> <ul> <li>a</li> <li>b</li> <li>c</li> <li>d</li> <li>e</li> </ul> </body> </html>

Пример

Давайте укажем собственный код статуса 404 для страницы ошибки:

from fastapi import FastAPI, Request from fastapi.templating import Jinja2Templates app = FastAPI() templates = Jinja2Templates(directory='templates') @app.get('/user') def user(request: Request): return templates.TemplateResponse( request, 'index.html', {'text': 'page found'}, status_code=404 )

Результат выполнения кода:

<!DOCTYPE html> <html> <head> <title>Index</title> </head> <body> <p>page found</p> </body> </html>

Смотрите также

  • класс Jinja2Templates,
    который управляет шаблонами Jinja2 в FastAPI
  • метод get_template,
    который возвращает объект шаблона по имени
  • параметр context,
    который передаёт данные в шаблон
  • параметр status_code,
    который задаёт HTTP-статус ответа
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить