文章目录
通过前面的学习,现在我们来看看如何渲染网页,别总是一串原始字母。
官方文档位置:
https://fastapi.tiangolo.com/advanced/templates/
(B站学习网址https://www.bilibili.com/video/av93282315)
一、简单实现
首先,必须注意的是,FastAPI这个Python Web框架并没有带渲染的网页模板引擎,但是也正因为如此,它可以使用任何网页模板。
官方例子是jinjia2 。
1、依赖库安装
pip install jinja2 aiofiles
aiofiles是静态网页需要的包
特别说明的是,Starlette 是一个轻量级 ASGI 框架/工具包,FastAPI一大特色。
然后,
2、建立目录
需要上图箭头目录和文件。注意,其他目录和文件都是我没找到官方这个案例时候,自己尝试拼接jinjia2的弯路。
萌新表示,仔细翻文档是硬道理!!!
然后,
3、item.html文件代码
<html>
<head>
<title>Item Details</title>
<link href="{
{ url_for('static', path='/styles.css') }}" rel="stylesheet">
</head>
<body>
<h1>Item ID: {
{ id }}</h1>
</body>
</html>
然后,
4、main.py文件代码
from fastapi import FastAPI
import uvicorn as u
from starlette.requests import Request
from starlette.staticfiles import StaticFiles
from starlette.templating import Jinja2Templates
app = FastAPI()
app.mount("/static", StaticFiles(directory="static"), name="static")
# 创建一个templates(模板)对象,以后可以重用。
templates = Jinja2Templates(directory="templates")
# Request在路径操作中声明一个参数,该参数将返回模板。
# 使用templates您创建的渲染并返回TemplateResponse,并request在Jinja2“上下文” 中将用作键值对之一。
@app.get("/items/{id}")
async def read_item(request: Request, id: str):
return templates.TemplateResponse("item.html", {
"request": request, "id": id})
if __name__ == '__main__':
u.run(app, host="127.0.0.1", port=8080)
最后跑起来,
5、浏览器输入
http://127.0.0.1:8080/items/888888
h1效果出来咯,剩下的就交给前端的框架啦。。。。
注意:看后台的话,这里没有加CSS样式错误。
二、借用bootstrap模板
1、目录结构与名称:
2、index.html代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content