博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【学员管理系统】0x02 学生信息管理功能
阅读量:4360 次
发布时间: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

你可能感兴趣的文章
.net中调用exchange服务器发邮件
查看>>
nginx知识问答
查看>>
JS - 跳转页面
查看>>
显示消息提示对话框(WebForm)
查看>>
分享下自己编译 XBMC 的过程(zhuan)
查看>>
selenium3 + python - cookie定位
查看>>
通过百度地图API获取地址经纬度
查看>>
Map接口
查看>>
【NIO】之IO和NIO的区别
查看>>
for+next()实现数组的遍历及while list each 的使用
查看>>
MySQL中查询获取每个班级成绩前三名的学生信息
查看>>
ubuntu下如何查找某个文件的路径
查看>>
es6常用基础合集
查看>>
关于数据库表的“记录”与“字段”
查看>>
Huffman树学习
查看>>
获取用户地理位置
查看>>
kubernetes cpu限制参数说明
查看>>
SQLSERVER如何获取一个数据库中的所有表的名称、一个表中所有字段的名称
查看>>
Linux 常用命令二 pwd cd
查看>>
Axis通过wsdd部署Web Service
查看>>