博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【学员管理系统】0x02 学生信息管理功能
阅读量:4359 次
发布时间:2019-06-07

本文共 5304 字,大约阅读时间需要 17 分钟。

 【学员管理系统】0x02 学生信息管理功能

写在前面

项目详细需求参见

Django框架大致处理流程

捋一下Django框架相关的内容:

浏览器输入URL到页面展示结果的过程,可以简单参考下图:

上图中,绿色部分就是我们实际需要开发的那部分。

 

实现了班级信息的增删改查,现在继续开发学生信息管理的功能。

学生信息管理相比于班级信息管理稍微难一点,因为数据库的表结构中学生表通过外键关联了班级表。

所以增删改查的操作需要注意外键部分的相关操作。

学生信息展示(查)

 区别于班级信息管理,学生信息因为通过外键关联了班级信息,所以除了要展示学生的姓名还要展示出学生所属班级的名称。

后端部分

def student_list(request):    conn = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd="root1234", db="mysite", charset="utf8")    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)    cursor.execute("SELECT student.id, student.name, class.name AS class_name from student LEFT JOIN class ON student.class_id = class.id;")    student_list = cursor.fetchall()    cursor.close()    conn.close()    return render(request, "student_list.html", {
"students": student_list})
后端部分

前端部分

{
% for student in students %}
{
% endfor %}
# 学生姓名 班级 操作
{
{ student.id }}
{
{ student.name }}
{
{ student.class_name }}
编辑 | 新页面编辑 | 删除
前端部分

删除学生信息(删) 

后端部分

def delete_student(request):    # 从GET请求的URL中取到要删除的学生ID    student_id = request.GET.get("student_id")    # 连接数据库    conn = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd="root1234", db="mysite", charset="utf8")    cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)    # 删除指定的学生    sql = "delete from student WHERE id=%s;"    # 执行SQL语句    cursor.execute(sql, [student_id, ])    conn.commit()    conn.close()    # 删除成功,跳转到学生列表页    return redirect("/student_list/")
后端部分

前端部分

 注意在学生信息的页面删除按钮上用模板语言的方式拼接student_id。

前端部分

添加学生信息(增) 

后端部分

def add_student(request):    # 如果是POST请求表示前端提交数据过来    if request.method == "POST":        student_name = request.POST.get("student_name")        class_id = request.POST.get("class_id")        conn = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd="root1234", db="mysite", charset="utf8")        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)        cursor.execute("insert into student(name, class_id) VALUES (%s, %s)", [student_name, class_id])        conn.commit()        cursor.close()        conn.close()        return redirect("/student_list/")    # 前端不发送POST请求情况下默认返回新增学生信息页面    else:        # 因为我们新添加学生信息的时候需要指定所属的班级        # 所以需要先查询出所有的班级信息,填充到页面上        conn = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd="root1234", db="mysite", charset="utf8")        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)        cursor.execute("select id, name from class")        class_list = cursor.fetchall()        cursor.close()        conn.close()        return render(request, "add_student.html", {
"class_list": class_list})
后端部分

前端部分

前端页面需要将已经有的班级信息做成可以选择的select框。 

前端部分

编辑学生信息(改)

后端部分

def edit_student(request):    if request.method == "POST":        student_id = request.POST.get("student_id")        student_name = request.POST.get("student_name")        class_id = request.POST.get("class_id")        # 更新学生表的SQL        sql = "update student set name=%s, class_id= %s WHERE id=%s;"        # 连接数据库        conn = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd="root1234", db="mysite", charset="utf8")        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)        cursor.execute(sql, [student_name, class_id, student_id])        cursor.close()        conn.close()        # 更新完学生信息之后跳转到学生列表页面        return redirect("/student_list/")    else:        # 要编辑学生信息就需要在页面上把当前学生的信息以及所有的班级信息都展示出来        # 取到要编辑的学生的ID        student_id = request.GET.get("student_id")        # 连接数据库        conn = pymysql.connect(host="127.0.0.1", port=3306, user="root", passwd="root1234", db="mysite", charset="utf8")        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)        # 取到所有的班级信息        get_class_sql = "select id, name from class;"        cursor.execute(get_class_sql)        class_list = cursor.fetchall()        get_student_sql = "select id, name, class_id from student where id=%s;"        cursor.execute(get_student_sql, [student_id, ])        student = cursor.fetchone()        cursor.close()        conn.close()        return render(request, "edit_student.html", {
"class_list": class_list, "student": student})
后端部分

前端部分

{
{ error }}
前端部分

 

转载于:https://www.cnblogs.com/bigtreei/p/8385917.html

你可能感兴趣的文章
构建之法--软件工程师自我测评表
查看>>
电子书搜索
查看>>
SQO2008配置管理工具服务显示远程过程调用失败
查看>>
【HDOJ】1009 FatMouse' Trade
查看>>
[Node.js]在windows下不得不防的小错误
查看>>
Java命令运行class文件,报“找不到或无法加载主类”错误
查看>>
docker-compose 部署 Redis
查看>>
摄像头采集,264编码,live555直播(2)
查看>>
谷歌跨域
查看>>
使用葡萄城报表,轻松实现高度精准的报表套打
查看>>
Linux命令
查看>>
unicode ascii 互转 函数 C实现 MultiByteToWideChar/WideCharToMultiByte 详解
查看>>
大三第一学期实验报告
查看>>
mysql远程链接
查看>>
nginx location配置
查看>>
Easy Install详细参数
查看>>
选课系统
查看>>
最简实例演示asp.net5中用户认证和授权(2)
查看>>
ubuntu rhythmbox乱码解决方法
查看>>
LeetCode题解之Univalued Binary Tree
查看>>