Day4-Web前端开发
Web 开发实战-学生管理系统后端开发
简介
知识模块
知识点
- 后端接口实现
- 请求方法的处理
- 请求数据的处理
- 响应数据的处理
- 蓝图与视图
- 模板技术
- 路由跳转
- 静态文件
- 路由及跨域
受众
- 初级测试开发工程师
- 初级 Python 开发工程师
实战要求
- 使用 Flask 搭建学生管理系统后端接口
- 学生信息使用模型类表示,包含学号(不需要输入,自动增长)、改名,年龄(整数类型)、性别、地址。
- 使用蓝图管理接口路由及接口视图函数,访问地址前缀为
/stu
- 使用列表保存所有学生的数据源,不使用数据库
- 首页接口 -- 显示数据源中的所有数据到
index.html
文件中
- 添加接口 -- 当点击首页中的
添加学生
按钮时,页面跳转到 add.html
页面,在页面输入数据后,在视图函数中接收数据并保存到数据源中
- 修改接口 -- 在点击学生修改功能时,跳转到
change.html
页面,并在页面中显示被修改学生原始信息,修改信息后,点击提交后将新信息保存到数据源,并重定向到首页显示修改后的数据
- 删除接口 -- 在点击学生删除功能时,直接将学生删除,并重定向到首页显示删除后的数据
实现代码
学生模型类 - StuModel.py
# 定义模型类
class Student(object):
# 自增ID
__auto_increment_sid = 1
# 定义字段
def __init__(self, name, age, gender, address):
# 将自增ID设置给当前学生
self.sid = Student.__auto_increment_sid
# 自增ID加1
Student.__auto_increment_sid += 1
# 保存学生其它信息
self.name = name
self.age = age
self.gender = gender
self.address = address
# 定义模型对象显示格式
def __repr__(self):
return f'编号:{self.sid} 姓名:{self.name} 年龄:{self.age} 姓名:{self.gender} 地址:{self.address}'
蓝图文件 - StuBP.py
# 导入模块
from flask import *
# 导入类型类
from StuModel import Student
# 学生数据
students = []
# 创建蓝图对象
stu = Blueprint("StuBluePrint",__name__,url_prefix="/stu")
@stu.route("/index")
def index():
return render_template("index.html",students=students)
# 添加视图接口函数
@stu.route("/add", methods=['GET',"POST"])
def add():
if request.method == "GET":
return render_template("add.html")
else:
# 获取表单提交的数据
name = request.values.get("name")
age = int(request.values.get("age"))
gender = request.values.get("gender")
address = request.values.get("address")
# 创建实例对象
obj = Student(name=name, age=age, gender=gender, address=address)
# 获取会话对象
# 插入数据
students.append(obj)
return redirect("/stu/index")
# 修改视图接口函数
@stu.route("/change/<sid>", methods=['GET',"POST"])
def change(sid):
if request.method == "GET":
cstu = ""
for stu in students:
if stu.sid == int(sid):
cstu = stu
print(cstu)
break
print(cstu)
return render_template("change.html",stu=cstu)
else:
# 获取表单提交的数据
name = request.values.get("name")
age = int(request.values.get("age"))
gender = request.values.get("gender")
address = request.values.get("address")
for stu in students:
if stu.sid == int(sid):
stu.name = name
stu.age = age
stu.gender = gender
stu.address = address
break
return redirect("/stu/index")
# 删除视图接口函数
@stu.route("/del/<sid>")
def delete(sid):
for stu in students:
if stu.sid == int(sid):
students.remove(stu)
break
return redirect("/stu/index")
Flask 服务主文件 - Server.py
# 导入模块
from flask import *
# 导入蓝图
from StuBP import *
if __name__ == '__main__':
# 创建Flask实例
app = Flask(__name__)
# 注册蓝图
app.register_blueprint(stu)
# 运行实例
app.run(debug=True)
总结
- 实战基于 Flask 实现了关于学生管理系统的后端接口
- 此处可以在模板文件夹中创建三个空的模板文件,前端页面显示效果在此暂不实现