flask入门

第一个Flask项目


创建后项目如下图

static存放静态文件,templates存放Jinja2模板,app.py是整个项目的入口文件

我们略微理解下app.py这里的代码

python 复制代码
# 从flask这个包中导入Flask类
from flask import Flask

#使用Flask类创建一个app对象
#__name__:代表当前这个app.py模板
#1.以后出现bug,可以帮助我们快速定位
#2.对于寻找模板文件,有一个相对路径
app = Flask(__name__)

#创建一个路由和视图函数的映射
#https://www.baidu.com
#/home/user/。。。。
#这里单独一个/表示根路由
@app.route('/')
def hello_world():  # put application's code here
    return 'Hello World!'


if __name__ == '__main__':
    app.run()

我们运行代码

进入网站查看

debug、host和port的配置


说明:

  1. debug模式

    • 开启debug模式后,只要修改代码后保存,就会自动重新加载,不需要手动重启项目
    • 如果开发的时候,出现bug,如果开启了debug模式,在浏览器上就可以看到出错信息
  2. 修改host

    • 主要作用:就是让其他电脑(包括任何可以联网的电子设备,比如手机,平板)能访问到我电脑上的flask项目
  3. 修改端口号

    • 主要作用:如果5000端口被其他程序占用了,那么可以通过修改port来监听的端口号

URL与视图的映射

无参url

python 复制代码
from flask import Flask

app = Flask(__name__)

# url:http[80]/https[443]//www.baidu.com:443/path
#url与视图:其实可以理解为path与视图
@app.route('/')
def hello_world(): 
    return 'Hello World!'

@app.route('/demo')
def china(): 
    return 'Hello 中国'

if __name__ == '__main__':
    app.run()

注意修改两个地方,一个是路径名,一个是函数名

有参url

带参数的url,将参数固定到了path中

python 复制代码
@app.route('/demo2/<int:id>')
def demo2(id):
    return '您携带的id是%s' % id

如果去掉int:,则传入什么都行,加入后只能传入int类型,否则会报错

查询字符串的方式传参

用这种方式需要用到request,先在开头引入

python 复制代码
from flask import Flask,request
python 复制代码
#/book/list:会给我返回第一页的数据
#/book/list?page=2:获取第二页的数据
@app.route('/book/list')
def book_list():
    #arguments:参数
    #request.args:类字典类型
    page = request.args.get("page",default=1,type=int)
    return f"你得到的是第{page}的信息"


Jinja2

模板渲染

现在template里新建html文件

在body里填入内容就可以显示在页面上

比如在body里写个你好,运行代码

那么我们如何把页面渲染给前端,用render_template

python 复制代码
from flask import Flask,render_template

app = Flask(__name__)


@app.route('/')
def hello_world():  # put application's code here
    # return 'Hello World!'
    return render_template("index.html")

if __name__ == '__main__':
    app.run()

如何给html传参使用

模板访问对象属性

通过类传入数据

python 复制代码
# app.py
class User:
    def __init__(self,username,email):
        self.username = username
        self.email = email

@app.route('/')
def hello_world():
    user=User(username="李四",email="123@qq.com")
    person={
        "username":"张三",
        "email":"456@qq.com"
    }
    return render_template("index.html",user=user,person=person)

#index.html
<body>
这是传入的名字:{{ user.username }}
这是传入的邮箱:{{ user.email }}
<br>
{{ person['username'] }}
{{ person.username }}
{{ person['email'] }}
{{ person.email }}
</body>

过滤器的使用

控制语句

模板继承

jinjia2中加载静态文件

相关推荐
明月_清风4 小时前
为什么最近开始关注 JEV?几个实战案例告诉你答案
人工智能·后端
2601_966949654 小时前
只拿到股票代码还不够:量化程序到底还需要哪些标的信息?——从数据建模开始理解股票元数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
蒸鱼Yuzheng4 小时前
Python 游戏测试开发怎么准备:日志解析、接口校验、并发与可维护性
自动化测试·python·测试开发·面试题·游戏测试
Ivanqhz5 小时前
BM1688 双核架构
python·深度学习·神经网络·cnn·mlir
GetcharZp5 小时前
5 分钟拥有自己的 S3:RustFS 上手(MinIO 的 Rust 替代,Apache 2.0 可商用)
后端
Java后端的Ai之路5 小时前
Python进阶探索17 - Python中的深拷贝与浅拷贝
人工智能·python·ai·浅拷贝·深拷贝
行百里er6 小时前
Redis 版本演进、新特性与协议那些事儿
redis·后端
Joy T6 小时前
Spring AI 2.0 Agent 进阶:Memory、State 与 Context Engineering 常见技术全景
java·人工智能·后端·spring·agent入门·agent state
西柚研究生1234566 小时前
论文分析17:YOLOv11_UAVNet:无人机航拍图像专用目标检测算法
人工智能·python·深度学习·算法·目标检测