由于上周忙于写毕业设计,就暂停了这个项目,这周开始继续完善各个功能。
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运行结果:
上面的代码使用到了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, 效果:
