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

Класс Jinja2Templates

Класс Jinja2Templates применяется для рендеринга HTML-шаблонов через шаблонизатор Jinja2. Первым параметром передаётся директория с шаблонами, например 'templates'. Экземпляр класса хранит настройки окружения Jinja2 и умеет отдавать готовые страницы через метод TemplateResponse.

Обычно объект templates создают один раз на уровне модуля, а затем используют в обработчиках маршрутов. В шаблон передаётся словарь контекста, значения которого подставляются в HTML.

Синтаксис

from fastapi.templating import Jinja2Templates templates = Jinja2Templates(directory='templates')

Пример

Давайте создадим шаблон и вернём его из обработчика:

<!DOCTYPE html> <html> <head> <title>Main page</title> </head> <body> <h1>{{ title }}</h1> <p>{{ text }}</p> </body> </html>

Теперь подключим шаблонизатор к приложению:

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

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

<!DOCTYPE html> <html> <head> <title>Main page</title> </head> <body> <h1>hello</h1> <p>article</p> </body> </html>

Пример

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

<!DOCTYPE html> <html> <head> <title>Users</title> </head> <body> <ul> {% for user in users %} <li>{{ user }}</li> {% endfor %} </ul> </body> </html>

Теперь вернём этот шаблон из обработчика:

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

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

<!DOCTYPE html> <html> <head> <title>Users</title> </head> <body> <ul> <li>abcde</li> <li>article</li> <li>user</li> </ul> </body> </html>

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

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