Flask简介

Flask 是一个轻量级的基于 Python 的 Web 框架,封装功能不及Django完善,性能不及Tornado,但是Flask的第三方开源组件比丰富(http://flask.pocoo.org/extensions/),其 WSGI工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 。Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具,所以它比Django更加便捷。

一样的我们需要下载Flask的模块:pip install Flask

Flask简单入门

在环境搭建好以后,你就能创建项目了,我们直接用PyCharm就能直接创建Flask项目了
Flask框架入门_sqlalchemy
创建好后项目目录
Flask框架入门_django_02
static:就是存放我们静态资源文件的,比如图片这些
templates:和Django一样也就是放模板页面的地方
app.py:里面就是我们的具体业务代码和路由

Flask操作数据库还需要导入第三方的模块
pip install flask-sqlalchemy
我们要通过它来连接数据库

Flask是通过路由来传参的

@app.route("/路径/<数据类型:参数>")
def 函数(参数):
    print(f"传递过来的参数为:{参数}")

比如我这里的

@app.route("/students/<int:sid>")
def students(sid):
    return f"您要查询的编号为:{sid}"

然后我前台页面只需在地址栏输入
http://127.0.0.1:5000/students/1
它就会默认返回数据
Flask框架入门_django_03
后台传参到前台,都必须以键值对的方式传递,比如name=‘zs’

def hello():
       return render_template("index.html", key=value)

在前台接收以 {{ key }},比如{{ name }}

它前台表达式的语法和Django是一样的了,这里就不多提了,直接上一个demo

from flask import Flask,render_template
from flask_sqlalchemy import SQLAlchemy
import pymysql

pymysql.install_as_MySQLdb()

# 创建Flask应用
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI']="mysql://root:123@127.0.0.1:3306/python"
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

# 连接mysql数据库
db = SQLAlchemy(app)


# 创建模型
class Persons(db.Model):
    # 定义表名
    __tablename__ = "persons"
    # 列名对应实体类属性
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20))
    age = db.Column(db.Integer)


# 创建路由和函数
@app.route('/')
def hello_world():
    return 'Hello World!'

@app.route("/person",methods=["GET","POST"])
def student():
    name = "zs"
    age = 22
#     查询数据库表的数据
    persons = Persons.query.all()
    return render_template("index.html", name=name, age=age, persons=persons)

@app.route("/del/<int:id>",methods=["GET","POST"])
def delete(id):
    per = Persons.query.filter_by(id=id).first()
    delete = db.session.delete(per)
    persons = Persons.query.all()
    db.session.commit()
    return render_template("index.html", persons=persons, delete=delete)

@app.route("/students/<int:sid>")
def students(sid):
    return f"您要查询的编号为:{sid}"

if __name__ == '__main__':
    # 创建所有模型(表)
    db.create_all()
    # 启动方法
    app.run(debug=True)

前端html代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Flask</title>
</head>
<body>
    <h1>姓名:{{ name }}</h1>
    <h2>年龄:{{ age }}</h2>

<table border="1px">
    <tr>
        <th>编号</th>
        <th>姓名</th>
        <th>年龄</th>
        <th>操作</th>
    </tr>
    {% for p in persons %}
    <tr>
        <td>{{ p.id }}</td>
        <td>{{ p.name }}</td>
        <td>{{ p.age }}</td>
        <td><a href="/del/{{ p.id }}">删除</a></td>
    </tr>
    {% endfor %}
</table>

</body>
</html>

最后效果
Flask框架入门_Python Web框架Flask_04
end…