Skip to content

Web 后端开发

Web 后端开发

学习价值

学习目标

Flask 是一个用 Python 编写的轻量级 Web 应用框架。它被设计为易于使用和扩展,特别适合小型项目和微服务架构。

  • 基础概念

    理解 Flask 的核心概念,如应用对象、路由、视图函数。

  • 环境搭建

    安装 Python 和 Flask,配置开发环境。

  • 路由和视图

    学习如何定义路由和视图函数,处理HTTP请求。

  • 模板渲染

    使用 Jinja2 模板引擎渲染 HTML 页面。

  • 数据库操作

    学习如何使用 PyMySQL 等扩展与数据库交互。

知识模块

  • Python 平台开发-Flask L1

实战需求

学生管理系统旨在提供一个简洁、高效的解决方案,用于管理学校中学生的个人信息。该系统将支持学生数据的增删改查操作,并以科学化、系统化和规范化的方式维护信息。

以 Flask 作为开发框架完成学生管理系统的接口实战需求

功能拆解

  1. 基于 flask 框架实现 Web 版学生管理系统

  2. 系统基于功能需要提供 列表添加修改删除 等功能的相关接口

  3. 所有数据需通过 MySQL 数据库进行持久化存储

    • 数据表 student 包含以下字段:
    • sid: 学号,主键
    • name: 姓名
    • age: 年龄
    • gender: 性别
  4. 列表接口

    • GET 请求方式返回列表页面
    • POST 请求方式以 JSON 格式返回所有学生数据
  5. 添加接口

    • GET 请求方式返回添加页面
    • POST 请求方式,以 JSON 格式返回所有学生数据,包含新添加的数据
  6. 修改接口

    • 所有修改相关请求需要携带要修改学生的 ID 信息
    • GET 请求方式返回修改页面
    • POST 请求方式,以 JSON 格式返回所有学生数据包含修改后的数据
    • GET 请求方式,以 JSON 格式返回修改学生在修改页面回显的数据
  7. 删除接口

    • 所有修改相关请求需要携带要删除学生的ID信息
    • GET 请求方式删除指定学生信息并在列表页显示删除后的结果

相关知识点

教程地址 教程视频地址 时间位置
Flask 环境安装与配置 Flask 环境安装与配置 全部
接口路由技术 接口路由技术 全部
请求与响应 请求方法 请求与响应 请求方法 全部
请求与响应 处理请求数据 请求与响应 处理请求数据 全部
请求与响应 处理响应信息 请求与响应 处理响应信息 全部
测试平台环境配置 测试平台环境配置 全部
模板技术 模板技术 全部
静态文件 静态文件 全部
路由以及跨域 路由以及跨域 全部
数据库操作 数据库操作 全部

实战代码

数据库准备

# 创建数据库
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.htmladd.htmlchange.html 三个文件。

总结

Flask 是一个用 Python 编写的轻量级 Web 应用框架。它被设计为易于使用和扩展,特别适合小型项目、微服务以及快速开发。