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项目了
创建好后项目目录
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
它就会默认返回数据
后台传参到前台,都必须以键值对的方式传递,比如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>
最后效果
end…