Flask

Sherry 发布于 2025-03-27 35 次阅读 文章 最后更新于 2025-03-27 716 字


基础

[!tip]

from flask import Flask

[!note]

创建 flask

from flask import Flask  

# 创建一个Flask应用实例  
app = Flask(__name__)  

# 访问/xxx时,执行index()函数  
@app.route('/xxx')  
def index():  
    return '成功!'  

# 运行Flask应用  
if __name__ == '__main__':  
    app.run()

[!note]

修改网址端口

app.run(host="127.0.0.1",port=5000)

[!note]

获取 get 请求参数

from flask import Flask,request  

# 创建一个Flask应用实例  
app = Flask(__name__)  

# 访问/xxx时,执行index()函数  
@app.route('/index')  
def index():  
    age = request.args.get('age')  
    pwd = request.args.get('pwd')  
    print(age,pwd)  
    return '成功!'  

# 运行Flask应用  
if __name__ == '__main__':  
    app.run()

[!note]

设置支持 POST 请求,并获取参数

from flask import Flask,request  

# 创建一个Flask应用实例  
app = Flask(__name__)  

# 访问/xxx时,执行index()函数  
@app.route('/index',methods=['GET','POST'] )  
def index():  
    age = request.args.get('age')  
    pwd = request.args.get('pwd')  
    xx = request.form.get('xx')  
    yy = request.form.get('yy')  
    print(age,pwd)  
    print(xx,yy)  
    return '成功!'  

# 运行Flask应用  
if __name__ == '__main__':  
    app.run()

[!note]

发送 POST 请求


json 格式

request.json    # 获取JSON值

[!note]

返回 json

from flask import Flask,request,jsonify  

# 创建一个Flask应用实例  
app = Flask(__name__)  

# 访问/xxx时,执行index()函数  
@app.route('/index',methods=['GET','POST'] )  
def index():  
    age = request.args.get('age')  
    pwd = request.args.get('pwd')  
    xx = request.form.get('xx')  
    yy = request.form.get('yy')  
    print(age,pwd)  
    print(xx,yy)  

    print(request.json)  

    return jsonify({"status": 200, "msg": "success"})  

# 运行Flask应用  
if __name__ == '__main__':  
    app.run()

[!note]

创建 mysql 连接池

POOL = PooledDB(
creator=pymysql,
#使用链接数据库的模块
maxconnections=10,#连接池允许的最大连接数,0和None表示不限制连接数
mincached=2,#初始化时,链接池中至少创建的空闲的链接,0表示不创建
maxcached=3,#链接池中最多闲置的链接,o和None不限制
blocking:=True,#连接池中如果没有可用连接后,是否阻塞等待。TrUe,等待;False,不等待然后报错
setsession=[],#开始会话前执行的命令列表。如:["set datestyle to.","set time zone."]
ping=0,

host='127.0.0.1,port=3306',user='root',passwd='105105',charset="utf8",db='localhost'
)

连接池连接

coon = POOL.connection()
cursor = conn.cursor()
cursor.execute(sql,params)
result = cursor.fetchone()
cursor.close()
conn.close() # 不是关闭连接,将此链接还给连接池

[!note]

返回指定页面

from flask import Flask,request,render_template
# 创建一个Flask应用实例  
app = Flask(__name__)

@app.route('/index',methods=['GET','POST'] )
def index():
    return render_template("index.html")

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

[!note]

重定向页面

return redirect('/info/list/')

Flask HTML 模板语法

<!-- 变量 -->
<p>{{ name }}</p>

<!-- if语句 -->
{% if user %}
  <p>Welcome, {{ user }}!</p>
{% else %}
  <p>Welcome, Guest!</p>
{% endif %}

<!-- for循环 -->
<ul>
{% for item in items %}
  <li>{{ item }}</li>
{% endfor %}
</ul>

<!-- 注释 -->
{# 这是一个注释,不会在HTML中显示 #}

<!-- 宏(Macro) -->
{% macro render_comment(comment) %}
  <div class="comment">
    <p>{{ comment.author }}: {{ comment.content }}</p>
  </div>
{% endmacro %}

<!-- 模板继承 -->
{% extends "base.html" %}

{% block content %}
  <p>This is the child template content.</p>
{% endblock %}

<!-- 包含其他模板 -->
{% include 'footer.html' %}