20240602-Python后端开发实战

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 请求方式删除指定学生信息并在列表页显示删除后的结果

实战代码

数据库准备

# 创建数据库
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 应用框架。它被设计为易于使用和扩展,特别适合小型项目、微服务以及快速开发。