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

Параметр context

Параметр context применяется в методе TemplateResponse и в функции get_template для передачи переменных из Python-кода в HTML-шаблон. В него передаётся словарь, где ключи становятся именами переменных внутри шаблона, а значения - их содержимым. Без этого параметра шаблон не получит никаких данных из обработчика маршрута.

Синтаксис

TemplateResponse(name, {"context": context})

Либо при использовании именованных аргументов:

TemplateResponse(name, context={"key": "value"})

Пример

Давайте передадим в шаблон переменную title через параметр context:

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( "index.html", {"request": request, "title": "hello"} )

Файл шаблона templates/index.html:

<!DOCTYPE html> <html> <head> <title>{{ title }}</title> </head> <body> <h1>{{ title }}</h1> </body> </html>

После запуска сервера и перехода на адрес / переменная title будет подставлена в шаблон, и на странице отобразится текст hello.

Пример

Давайте передадим в шаблон сразу несколько переменных, включая список:

from fastapi import FastAPI, Request from fastapi.templating import Jinja2Templates app = FastAPI() templates = Jinja2Templates(directory="templates") @app.get('/users') def users(request: Request): users_list = ['abcde', 'article', 'user'] context = { "request": request, "title": "Users", "users": users_list } return templates.TemplateResponse("users.html", context)

Файл шаблона templates/users.html:

<+html+> {{ title }}
    {% for user in users %}
  • {{ user }}
  • {% endfor %}
<-html+>

После перехода на адрес /users на странице отобразится список из трёх элементов: abcde, article и user.

Пример

Давайте используем функцию get_template, которая также принимает параметр context:

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

В этом случае параметр context передаётся напрямую в метод render шаблона, и результат возвращается как обычная HTML-строка.

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

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