Django学生管理系统(2)(学生信息增删改查)

xiaoxiao2021-02-28  41

由于上周忙于写毕业设计,就暂停了这个项目,这周开始继续完善各个功能。

学生信息的增删改查

学生信息相关表格的建立

第一个功能需要进行的是对学生信息的操作,所以我先写好学生表(student)

mysql:

create table student( id int not null auto-increment, s_name varchar(30) not null, s_num varcahr(30) not null, primary key(id) )

migrate:

class Student(models.Model): s_name = models.CharField(max_length=30) # 学生姓名 s_num = models.CharField(max_length=30) # 学生学号 迁移数据(无论选择什么方法,都需要进行数据迁移,因为Django中还存在许许多多的初始表格) python manage.py makemigrations python manage.py migrate

运行结果:

学生信息的插入

写好一个简单的html页面

运行检验是否查找到模板

学生信息添加的方法 在stu app中的models写数据处理方法 def add_stu(request): if request.method == 'GET': return render(request, 'addstu.html') if request.method == 'POST': stu_name = request.POST.get('name') stu_num = request.POST.get('num') if not Student.objects.filter(s_num=stu_num).exists(): Student.objects.create( s_name=stu_name, s_num=stu_num ) return render(request, 'addstu.html') else: return render(request, 'addstu.html', {'message': '该学号已经存在!'})

上面的代码使用到了render定向跳转到指定的页面

方法写好后,设置简单添加学生信息的表单,这里使用到了block站位的方法:

模板页面base.html:

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> {% block title %} {% endblock %} </title> <style> body { width: 960px; margin: 0 auto; } .center { text-align: center; } #menu { margin-bottom: 100px; margin-left: 276px; } #menu ul { } #menu li { float: left; list-style: none; margin-right: 20px; } #menu a { text-decoration: none; } #main { clear: both; } #footer { margin-top: 20px; } #main input { margin-bottom: 20px; } </style> </head> <body> <h1 class="center"> {% block systemName %} {% endblock %}</h1> <div class="center" id="menu"> <ul> <li><a href="#">学生信息管理</a></li> <li><a href="#">课程信息管理</a></li> <li><a href="#">成绩信息管理</a></li> </ul> </div> <div id="main" class="center"> {% block main %} {% endblock %} </div> <h2 id="footer" class="center">©Qingle 2018年</h2> <script src="/static/js/jquery.min.js"></script> <script> $(function () { if($('#message').val() != ""){ alert($('#message').val()); return } }) </script> </body> </html>

添加学生的页面addstu.html:

{% extends "base.html" %} {% block title %} 添加学生信息 {% endblock %} {% block systemName %} 管理员后台 {% endblock %} {% block main %} <h3 class="center">学生信息添加</h3> <input type="hidden" id="message" value="{{ message }}"> <form action="/stu/addstu/" method="post"> 姓名:<input type="text" name="name"><br> 学号:<input type="text" name="num"><br> <input type="submit" value="添加"> </form> {% endblock %}

由上面的两个html文件,展示了block挖坑填坑的用法,由于页面代码比较长,在后面的过程中只展示效果,不再展示页面代码,整个项目基本都使用了block这一用法

添加数据效果展示

在添加方法里面设置了,判断学号是否重复,如果再输入的时候学号重复了,会弹框显示,该学号已经存在了。因为对于学生来说学号才是代表学生唯一性的编号。

最后记得多添加一些数!

学生信息展示

学生信息展示,其实就是一个学生查询的过程,只不过把查询到的数据都发送到了前台界面。 很简单的方法就可以实现了

def all_stu(request): if request.method == "GET": page_id = request.GET.get('page_id', 1) stus = Student.objects.all() paginator = Paginator(stus, 3) page = paginator.page(int(page_id)) return render(request, 'allstu.html', {'stus': page})

在上面的代码中使用了paginator分页的方法,效果如下:

学生信息删除

删除的方法也很简单,在每条数据后面对应一个删除标签,并找到这个数据的所对应的id进行删除!

def del_stu(request, id): Student.objects.get(id=id).delete() return HttpResponseRedirect('/stu/allstu')

效果:

学生查询

学生查询,也就是在页面上写个表单,提交表单,在通过提交值从数据库进行模糊查询查到信息并显示到页面上

def select_stu(request): str1 = request.POST.get('str1') # 判断是否只有数字组成,True代表为学号 if str(str1).isdigit(): stus = Student.objects.filter(s_num__contains=str1) else: stus = Student.objects.filter(s_name__contains=str1) return render(request, 'selectstu.html', {'stus': stus, 'str1': str1})

模糊查询的45, 效果:

学生信息修改

def change_stuinfo(request, id): """修改选中的学生信息""" if request.method == 'GET': stu = Student.objects.get(id=id) return render(request, 'changestu.html', {'stu': stu}) if request.method == 'POST': stu = Student.objects.get(id=id) name = request.POST.get('name') num = request.POST.get('num') stu.s_name = name stu.s_num = num stu.save() return HttpResponseRedirect('/stu/allstu')

转载请注明原文地址: https://www.6miu.com/read-2622926.html

最新回复(0)