Web 后端开发
学习目标
Flask 是一个用 Python 编写的轻量级 Web 应用框架。它被设计为易于使用和扩展,特别适合小型项目和微服务架构。
-
基础概念
理解 Flask 的核心概念,如应用对象、路由、视图函数。
-
环境搭建
安装 Python 和 Flask,配置开发环境。
-
路由和视图
学习如何定义路由和视图函数,处理HTTP请求。
-
模板渲染
使用
Jinja2
模板引擎渲染 HTML 页面。 -
数据库操作
学习如何使用
PyMySQL
等扩展与数据库交互。
知识模块
- Python 平台开发-Flask L1
实战需求
学生管理系统旨在提供一个简洁、高效的解决方案,用于管理学校中学生的个人信息。该系统将支持学生数据的增删改查操作,并以科学化、系统化和规范化的方式维护信息。
以 Flask 作为开发框架完成学生管理系统的接口实战需求
功能拆解
-
基于 flask 框架实现 Web 版学生管理系统
-
系统基于功能需要提供
列表
,添加
,修改
,删除
等功能的相关接口 -
所有数据需通过 MySQL 数据库进行持久化存储
- 数据表
student
包含以下字段: -
sid
: 学号,主键 -
name
: 姓名 -
age
: 年龄 -
gender
: 性别
- 数据表
-
列表接口
-
GET
请求方式返回列表页面 -
POST
请求方式以JSON
格式返回所有学生数据
-
-
添加接口
-
GET
请求方式返回添加页面 -
POST
请求方式,以JSON
格式返回所有学生数据,包含新添加的数据
-
-
修改接口
- 所有修改相关请求需要携带要修改学生的
ID
信息 -
GET
请求方式返回修改页面 -
POST
请求方式,以JSON
格式返回所有学生数据包含修改后的数据 -
GET
请求方式,以JSON
格式返回修改学生在修改页面回显的数据
- 所有修改相关请求需要携带要修改学生的
-
删除接口
- 所有修改相关请求需要携带要删除学生的ID信息
-
GET
请求方式删除指定学生信息并在列表页显示删除后的结果
实战代码
数据库准备
# 创建数据库
create database sms charset=utf8;
# 切换数据库
use sms
# 查看数据库中有哪些数据表
show tables;
# 创建数据表(字段根据需求去创建)
create table student(sid int primary key auto_increment, name char(50), age int, gender char(10));
# 插入数据
insert into student values(4,"Tony", 24,"male"),(5,"Alice",26,"female");
Flask 服务器配置
from flask import *
from pymysql import *
from flask_cors import CORS
# 创建 flask 实例
app = Flask(__name__)
# 连接数据库
db_connect = Connect(host="127.0.0.1", port=3306, user="root", password="123123123", database="sms", charset="utf8")
# 首页接口
@app.route("/")
def index():
return render_template("index.html")
# 首页数据接口
@app.route("/list")
def list():
# 查询数据库得到所有的数据展示
# 获取游标对象
cursor = db_connect.cursor()
sql_str = ''' select * from student; '''
cursor.execute(sql_str)
data = cursor.fetchall()
datas = []
for item in data:
s = {}
s["sid"] = item[0]
s["name"] = item[1]
s["age"] = item[2]
s["gender"] = item[3]
datas.append(s)
cursor.close()
return datas
# 添加页面接口,和添加数据接口
@app.route("/add", methods=["GET", "POST"])
def add():
# 根据请求方式区别不同的操作
if request.method == "GET":
return render_template("add.html")
else:
# 将添加提交过来的数据保存到数据库中
name = request.values.get("name")
age = request.values.get("age")
gender = request.values.get("gender")
sql_str = ''' insert into student (name, age, gender) values(%s,%s,%s) '''
cursor = db_connect.cursor()
cursor.execute(sql_str, [name, age, gender])
# 提交更改操作,不提交不生效
db_connect.commit()
cursor.close()
return redirect("/")
# 修改数据接口
@app.route("/change/<sid>", methods=["GET", "POST"])
def change(sid):
# 根据请求方式区别不同的操作
if request.method == "GET":
return render_template("change.html")
else:
# 将数据库中的数据找出来修改后再保存到数据库中
# 将添加提交过来的数据保存到数据库中
name = request.values.get("name")
age = request.values.get("age")
gender = request.values.get("gender")
sql_str = ''' update student set name=%s, age=%s, gender=%s where sid = %s '''
cursor = db_connect.cursor()
cursor.execute(sql_str, [name, age, gender,sid])
# 提交更改操作,不提交不生效
db_connect.commit()
cursor.close()
return redirect("/")
# 用来返回修改信息时的回显数据
@app.route("/changeData/<sid>")
def changeData(sid):
cursor = db_connect.cursor()
sql = '''select * from student where sid = ''' + sid
cursor.execute(sql)
item = cursor.fetchone()
data = {}
data["sid"] = item[0]
data["name"] = item[1]
data["age"] = item[2]
data["gender"] = item[3]
cursor.close()
return data
# 删除信息接口
@app.route("/delete/<sid>")
def delete(sid):
curosr = db_connect.cursor()
sql = ''' delete from student where sid = %s '''
curosr.execute(sql, [sid])
db_connect.commit()
curosr.close()
return redirect("/")
if __name__ == '__main__':
CORS(app, supports_credentials=True)
app.run(debug=True, port=8888)
注意: 服务器程序运行起来前,需先建立 templates
文件夹,并建立 index.html
、add.html
和 change.html
三个文件。
总结
Flask 是一个用 Python 编写的轻量级 Web 应用框架。它被设计为易于使用和扩展,特别适合小型项目、微服务以及快速开发。