Skip to content

Day4-Web前端开发

Web 开发实战-学生管理系统后端开发

简介

  • Web 开发实战-学生管理系统后端开发

知识模块

  • Flask L1

知识点

  • 后端接口实现
  • 请求方法的处理
  • 请求数据的处理
  • 响应数据的处理
  • 蓝图与视图
  • 模板技术
  • 路由跳转
  • 静态文件
  • 路由及跨域

受众

  • 初级测试开发工程师
  • 初级 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 实现了关于学生管理系统的后端接口
  • 此处可以在模板文件夹中创建三个空的模板文件,前端页面显示效果在此暂不实现