FastAPI学习(二)——FastAPI+Jinjia2模板渲染网页(跳转返回渲染页面)


通过前面的学习,现在我们来看看如何渲染网页,别总是一串原始字母。

官方文档位置:
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
  • 10
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值