我们先来看一下效果吧:(ps:以下需要用到Pycharm,navicat for Mysql等软件)

在这里插入图片描述
可以根据姓名或者性别来模糊查找:
在这里插入图片描述
在这里插入图片描述
接下来我们再看看增添学生:
在这里插入图片描述
在这里插入图片描述
查看一下删除功能(如删除3号学生)吧:
在这里插入图片描述
还有修改:
在这里插入图片描述

好的,了解之后我们再来看一下我们的代码吧:
在这里插入图片描述
看一下views.py:

from django.shortcuts import render
# 导入请求和响应的包
from django.shortcuts import HttpResponse
# 导入实体类所在的包
from Student.models import Student
# 导入 redirect包(重定向)
from django.shortcuts import redirect
# 导入实体类的模块
from Student import models
# 导入模糊查询
from django.db.models import Q
# 导入实体类
from Student.models import Student


# Create your views here.

# 主页显示所有学生的信息
def showAll(request):
    # 测试向网页发送字符串
    # return HttpResponse("Hello world");
    # 查询所有数据库学生表的信息
    students = Student.objects.all()
    count = students.__len__()
    # 返回网页地址并携带学生数据
    return render(request, "index.html", context={"students": students, "count": count})


# 根据首页输入框模糊查询
def findStudent(request):
    # 获取搜索框的值
    str = request.POST.get("str")
    # 模糊查询(根据姓名或者性别或者年级查询)
    students = models.Student.objects.filter(
        Q(sname__icontains=str) | Q(ssex__icontains=str))
    # 获取数据的总条数
    count = students.__len__()
    return render(request, "index.html", context={"students": students, "count": count})


# 添加学生
def addStudent(request):
    if request.method == "GET":
        # 通过提交的方式判断
        # 如果是首页点击添加,则跳转到add.html页面
        return render(request, "add.html")
    else:
        # 如果是添加页面提交数据。则添加到数据库
        sname = request.POST.get("sname")
        ssex = request.POST.get("ssex")
        sage = request.POST.get("sage")
        sgrade = request.POST.get("sgrade")
        sscore = request.POST.get("sscore")
        # 使用Django框架提供的添加对象的方法
        Student.objects.create(sname=sname, ssex=ssex, sage=sage,sgrade=sgrade,sscore=sscore)
        # Student.objects.create(sname=sname)
        # 重定向到index.html
        return redirect("index.html")


# 修改学生
def updateStudent(request):
    # 根据表单提交的方式判断是查询单个还是修改之后提交数据库
    if request.method == "GET":
        # 获取要修改的对象的sid查询单个的学生
        sid = request.GET['update_sid']
        #  根据学生的sid查询单个学生进行修改
        student = Student.objects.get(sid=sid)
        # 跳转到修改页面,并携带修改对象的信息
        return render(request, "update.html", context={"student": student})
    # 表单提交,进行修改学生
    else:
        # 获取需要修改的学生对象的信息
        update_sid=request.POST.get("sid")
        update_student = Student.objects.get(sid=update_sid)
        update_sname=request.POST.get("sname")
        update_ssex=request.POST.get("ssex")
        update_sage=request.POST.get("sage")
        update_sgrade = request.POST.get("sgrade")
        update_sscore = request.POST.get("sscore")
        # 修改对象的信息
        update_student.sname=update_sname
        update_student.ssex=update_ssex
        update_student.sage=update_sage
        update_student.sgrade = update_sgrade
        update_student.sscore = update_sscore
        # 保存对象到数据库
        update_student.save()
        # 重定向到首页,显示学生信息
        return redirect("index.html")

# 删除学生
def deleteStudent(request):
    # 获取需要删除的学生对象的sid
    delete_sid=request.GET['delete_sid']
    # 先查找单个对象,然后进行删除
    Student.objects.get(sid=delete_sid).delete()
    # 删除之后,重定向到首页
    return redirect("index.html")



index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>学生管理系统(web版)首页</title>
</head>
<script>
    {#    确认删除框#}
    function del(stu_sid) {
        var i = confirm("确认删除吗?")
        if (i == true) {
            location.href = "deleteStudent?delete_sid=" + stu_sid;
        }
    }

</script>
<body>
{#网页的标题#}
<div align="center">
    <h1>python-web版学生管理系统<font size="2">©zyy</font></h1>
    <p></p>
    {#模糊查询的表单#}
    <form action="findStudent" method="post">
        {#表单提交都要添加防御机制#}
        {% csrf_token %}
        <input type="text" name="str" placeholder="此处填写姓名或性别"><input type="submit" value="搜索">&emsp;&emsp;&emsp;&emsp;&emsp;&emsp;<a
            href="add.html">添加学生</a>
    </form>
    <p></p>
    <table border="1">
        <thead>
        <th>学生编号</th>
        <th>学生姓名</th>
        <th>学生性别</th>
        <th>学生年龄</th>
        <th>学生年级</th>
        <th>学生成绩</th>
        <th>操作</th>
        </thead>
        <tbody>
        {#将views.py返回的学生集合数据context中的键students通过for循环遍历#}
        {% for student in students %}
            <tr>
                <td>{{ student.sid }}</td>
                <td>{{ student.sname }}</td>
                <td>{{ student.ssex }}</td>
                <td>{{ student.sage }}</td>
                <td>{{ student.sgrade }}</td>
                <td>{{ student.sscore }}</td>
                <td><a href="updateStudent?update_sid={{ student.sid }}">修改</a>|<a
                        href="javascript:del({{ student.sid }})">删除</a></td>
            </tr>
        {% endfor %}
        </tbody>
    </table>
    <div style="margin-right:15px">共{{ count }}条记录</div>
</div>

</body>
</html>

add.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>添加学生</title>
</head>
<body>
<div align="center">
    <h3>添加学生</h3>
    <p></p>
    <form action="add.html" method="post">
        {#在 templete 中, 为每个 POST form 增加一个 {% csrf_token %} tag,这是Django的防御机制#}
        {% csrf_token %}
        学生姓名:<input type="text" name="sname"><br>
        学生性别:<input type="text" name="ssex"><br>
        学生年龄:<input type="text" name="sage"><br>
        学生年级:<input type="text" name="sgrade"><br>
        学生成绩:<input type="text" name="sscore"><br>
        <input type="submit" value="添加">
    </form>
</div>
</body>
</html>

update.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>修改学生</title>
</head>
<body>
<div align="center">
    <h3>修改学生</h3>
    <form action="updateStudent" method="post">
        {#在 templete 中, 为每个 POST form 增加一个 {% csrf_token %} tag,这是Django的防御机制#}
        {% csrf_token %}
        <input type="hidden" value="{{ student.sid }}" name="sid">
        学生姓名:<input type="text" value="{{ student.sname }}" name="sname"><br>
        学生性别:<input type="text" value="{{ student.ssex }}" name="ssex"><br>
        学生年龄:<input type="text" value="{{ student.sage }}" name="sage"><br>
        学生年级:<input type="text" value="{{ student.sgrade }}" name="sgrade"><br>
        学生成绩:<input type="text" value="{{ student.sscore }}" name="sscore"><br>
        <input type="submit" value="修改">
    </form>
</div>
</body>
</html>

关于此次的python-web学生管理系统,我已经存入网盘(复制这段内容后打开百度网盘手机App,操作更方便哦 链接:https://pan.baidu.com/s/19USLqIsRiNQidIWZVOhy3g 提取码:82au
~欢迎大家共同交流知识~
PS:谢谢小胡老师这两天的耐心指导!~~~

Logo

快速构建 Web 应用程序

更多推荐