jinjia2模板
jinja2的变量
Jinja2是一个流行的Python模板引擎,用于生成动态HTML页面。在FastAPI中,可以使用Jinja2Templates类来处理动态文件的请求。
python
from fastapi import FastAPI
import uvicorn
from fastapi.templating import Jinja2Templates
from fastapi import Request
app=FastAPI()
templates=Jinja2Templates(directory="templates")
@app.get("/index")
async def index(request: Request):
user = {
"name": "liu",
"age": 18,
"gender": "male",
}
books=["Python基础","FastAPI","数据分析","机器学习","深度学习"]
return templates.TemplateResponse(
"index.html",#模板文件
{
"request": request,
"user": user,
"books": books
}#context上下文,一个字典
)
if __name__== '__main__':
uvicorn.run("main:app",port=8000,reload=True)
jinja2的过滤器
过滤器用于对变量进行格式化或转换操作,常见的过滤器有**upper
(转为大写)、lower
(转为小写)、title
(转为标题格式)、length
(获取长度)、capitalize
(首字母大写)、trim
(去除空白)、round
(四舍五入)**等。用法是在变量后面加上管道符 |
,然后跟上过滤器名称。
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Jinja2过滤器示例</title>
</head>
<body>
<h1>Jinja2过滤器示例</h1>
<p>原始字符串: {{ user.name }}</p>
<p>大写: {{ user.name | upper }}</p>
<p>小写: {{ user.name | lower }}</p>
<p>标题格式: {{ user.name | title }}</p>
<p>长度: {{ user.name | length }}</p>
<p>首字母大写: {{ user.name | capitalize }}</p>
<p>去除空白: '{{ " Hello World! " | trim }}'</p>
<p>四舍五入: {{ 3.14159 | round(2) }}</p>
</body>
</html>
jinja2的控制结构
1.分支控制
Jinja2提供了**if
语句**来实现条件分支控制,可以根据不同的条件渲染不同的内容。
html
{% if user.age >= 18 %}
<p>{{ user.name }}是成年人。</p>
{% else %}
<p>{{ user.name }}是未成年人。</p>
{% endif %}
2.循环控制
Jinja2提供了**for
语句**来实现循环控制,可以遍历列表或字典等可迭代对象。
html
<ul>
{% for book in books %}
<li>{{ book }}</li>
{% endfor %}
</ul>