Параметр name
Параметр name применяется к методам
TemplateResponse и get_template
объекта Jinja2Templates.
Он принимает строку с именем файла шаблона,
который нужно отрендерить.
Путь указывается относительно директории,
заданной при создании объекта Jinja2Templates.
Имя шаблона может содержать поддиректории,
например 'user/profile.html'.
FastAPI передаёт этот параметр напрямую
в движок Jinja2 для загрузки файла.
Синтаксис
templates.TemplateResponse(
name='index.html',
context={'request': request}
)
Пример
Давайте создадим шаблон 'index.html'
и отрендерим его через параметр name:
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(
name='index.html',
context={'request': request}
)
Файл шаблона 'templates/index.html':
<!DOCTYPE html>
<html>
<body>
<h1>hello</h1>
</body>
</html>
Пример
Давайте передадим имя шаблона через переменную и используем поддиректорию:
from fastapi import FastAPI, Request
from fastapi.templating import Jinja2Templates
app = FastAPI()
templates = Jinja2Templates(directory='templates')
@app.get('/user')
def user(request: Request):
tmpl_name = 'user/profile.html'
return templates.TemplateResponse(
name=tmpl_name,
context={'request': request, 'name': 'abcde'}
)
Файл шаблона 'templates/user/profile.html':
<!DOCTYPE html>
<html>
<body>
<p>{{ name }}</p>
</body>
</html>
Результат выполнения кода для адреса /user:
<!DOCTYPE html>
<html>
<body>
<p>abcde</p>
</body>
</html>
Смотрите также
-
метод
TemplateResponse,
который рендерит шаблон и возвращает ответ -
метод
get_template,
который загружает объект шаблона по имени -
параметр
context,
который передаёт данные в шаблон -
класс
Jinja2Templates,
который управляет директорией шаблонов