Django_学生管理系统
一. Django简易学生管理系统
1.在pycharm中创建工程student_manage_system,添加app:student_manage
2.配置静态文件:在工程项目目录下新建目录static,并在settings.py中追加代码
- STATICFILES_DIRS=(os.path.join(BASE_DIR,'static'),)
3.设计学生管理系统所需数据库
在studnet_manage/models.py创建班级管理表、学生管理表、老师管理表
- from django.db import models
- # Create your models here.
- class classes(models.Model):
- title = models.CharField(max_length=32)
- teacher = models.ManyToManyField("Teachers")
- class student(models.Model):
- StudentName = models.CharField(max_length=32)
- age = models.IntegerField()
- gender = models.BooleanField()
- cs = models.ForeignKey("classes",on_delete=models.CASCADE)
- class Teachers(models.Model):
- TeacherName = models.CharField(max_length=32)
model.py
在终端Terminal 项目目录下执行数据表更新命令:
- python manage.py makemigrations
- python manage.py migrate
4.学生管理系统之班级管理
1.为了方便分别操作班级、老师、学生相关的业务,将student_manage目录下的views.py 删掉,在student_manage目录下新建目录views,并在views目录下 新建classes.py teachers.py students.py。
2.在classes.py 中写 get_classes, add_classes ,delete_classes ,edit_classes四个函数,完成对班级数据的增删改查
- from django.shortcuts import render
- from django.shortcuts import redirect
- from student_manage.models import *
- def get_classes(request):
- class_list = classes.objects.all()
- return render(request,'get_classes.html',{'class_list':class_list})
- def add_calsses(request):
- if request.method == "GET":
- return render(request, 'add_classes.html')
- elif request.method == 'POST':
- title = request.POST.get('title')
- classes.objects.create(title=title)
- return redirect('/get_classes.html')
- def delete_classes(request):
- nid=request.GET.get('nid')
- classes.objects.filter(id=nid).delete()
- return redirect('/get_classes.html')
- def edit_classes(request):
- if request.method=='GET':
- nid = request.GET.get('nid','')
- obj = classes.objects.get(id=nid)
- return render(request,'edit_classes.html',{"obj":obj})
- elif request.method=='POST':
- nid = request.GET.get('nid','')
- title = request.POST.get('title')
- classes.objects.filter(id=nid).update(title=title)
- return redirect('/get_classes.html')
classes.py
3.在urls.py 中配置url路由
- from django.contrib import admin
- from django.urls import path
- from django.conf.urls import url
- from student_manage.views import classes,students,ajax
- urlpatterns = [
- #path('admin/', admin.site.urls),
- url('^get_classes.html$',classes.get_classes),
- url('^add_classes.html$',classes.add_calsses),
- url('^delete_classes.html$',classes.delete_classes),
- url('^edit_classes.html$',classes.edit_classes),
- ]
urls.py
4.在templates目录下建立所需的html页面文件
<1>get_classes.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <div>
- <a href="/add_classes.html">添加</a>
- </div>
- <table border="1">
- <thead>
- <tr>
- <th>ID</th>
- <th>班级名称</th>
- <th>任课老师</th>
- <th>操作</th>
- </tr>
- </thead>
- <tbody>
- {% for row in class_list %}
- <tr>
- <td>
- {{ row.id }}
- </td>
- <td>
- {{ row.title}}
- </td>
- <td>
- {% for item in row.teacher.all %}
- <span>{{item.TeacherName}}</span>
- {% endfor %}
- </td>
- <td>
- <a href="/delete_classes.html?nid={{ row.id }}">删除</a>
- |
- <a href="/delete_classes.html?nid={{ row.id }}">ajax删除</a>
- |
- <a href="/edit_classes.html?nid={{ row.id }}">编辑</a>
- |
- <a href="/set_teacher.html?nid={{ row.id }}">分配老师</a>
- </tr>
- {% endfor %}
- </tbody>
- </table>
- </html>
get_classes.html
<2>add_classes.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- <form action="/add_classes.html" method="POST">
- {% csrf_token %}
- <input type="text" name="title" />
- <input type="submit" value="提交" />
- </form>
- </body>
- </html>
add_classes.html
<3>edit_classes.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- <h3>编辑学生信息</h3>
- <form method="post" action="/edit_students.html?nid={{ obj.id }}">
- {% csrf_token %}
- <p>姓名<input type="text" name="StudentName" value="{{ obj.StudentName }}"/></p>
- <p>年龄<input type="text" name="age" value="{{ obj.age }}"/></p>
- <p>性别:
- {% if obj.gender %}
- 男<input type="radio" name="gender" checked="checked" value="1"/>
- 女<input type="radio" name="gender" value="0"/>
- {% else%}
- 男<input type="radio" name="gender" value="1"/>
- 女<input type="radio" name="gender" checked="checked" value="0"/>
- {% endif %}
- </p>
- <p>班级:
- <select name="class_id">
- {% for row in class_list%}
- {% if row.id == obj.cs_id %}
- <option value="{{ row.id }}" selected="selected">{{ row.title }}</option>
- {% else %}
- <option value="{{ row.id }}">{{ row.title }}</option>
- {% endif %}
- {% endfor %}
- </select>
- </p>
- <p><input type="submit" value="提交修改"/></p>
- </form>
- </body>
- </html>
edit_classes.html
5.学生管理系统之学生管理
1.在students.py 中写 get_students, add_students ,delete_students ,edit_students 四个函数,完成对学生数据的增删改查
- from django.shortcuts import render
- from django.shortcuts import redirect
- from student_manage.models import *
- def get_students(request):
- student_list=student.objects.all()
- return render(request,'get_students.html',{'student_list':student_list})
- def add_students(request):
- class_list = classes.objects.all()
- if request.method == "GET":
- return render(request, 'add_students.html',{'class_list':class_list})
- if request.method == "POST":
- StudentName=request.POST.get('StudentName','')
- age=request.POST.get('age','')
- gender=request.POST.get('gender','')
- cs=request.POST.get('cs','')
- student.objects.create(StudentName=StudentName,age=age,gender=gender,cs_id=cs)
- return redirect('/get_students.html')
- def delete_students(request):
- nid = request.GET.get('nid')
- student.objects.filter(id=nid).delete()
- return redirect('/get_students.html')
- def edit_students(request):
- class_list = classes.objects.all()
- if request.method == 'GET':
- nid = request.GET.get('nid','')
- obj = student.objects.get(id=nid)
- print("class_list:",class_list)
- return render(request,'edit_students.html',{"class_list":class_list,"obj":obj})
- if request.method == 'POST':
- nid = request.GET.get('nid','')
- StudentName = request.POST.get('StudentName','')
- age=request.POST.get('age','')
- gender=request.POST.get('gender','')
- cs=request.POST.get('class_id','')
- print("class_id",cs)
- student.objects.filter(id=nid).update(StudentName=StudentName,age=age,gender=gender,cs_id=cs)
- return redirect('/get_students.html')
students.py
2.在urls.py 中配置url路由
- from django.contrib import admin
- from django.urls import path
- from django.conf.urls import url
- from student_manage.views import classes,students,ajax
- urlpatterns = [
- #path('admin/', admin.site.urls),
- url('^get_classes.html$',classes.get_classes),
- url('^add_classes.html$',classes.add_calsses),
- url('^delete_classes.html$',classes.delete_classes),
- url('^edit_classes.html$',classes.edit_classes),
- url('^get_students.html$',students.get_students),
- url('^add_students.html$',students.add_students),
- url('student_del_ajax.html$',ajax.student_del_ajax),
- url('^delete_students.html$',students.delete_students),
- url('^student_edit_ajax',ajax.student_edit_ajax),
- url('^edit_students.html$',students.edit_students),
- url('^set_teacher.html$',classes.set_teacher)
- ]
urls.py
3.在templates目录下建立所需的html页面文件
<1>get_students.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <div><a href="/add_students.html">添加</a></div>
- <body>
- <table border=1>
- <thead>
- <tr>
- <th>ID</th>
- <th>姓名</th>
- <th>年龄</th>
- <th>性别</th>
- <th>班级</th>
- <th>操作</th>
- </tr>
- </thead>
- <tbody>
- {% for row in student_list %}
- <tr nid="{{ row.id }}">
- <td>{{ row.id }}</td>
- <td>{{ row.StudentName }}</td>
- <td>{{ row.age }}</td>
- {% if row.gender%}
- <td>男</td>
- {% else %}
- <td>女</td>
- {% endif %}
- <td>{{ row.cs.title }}</td>
- <td>
- <a href="/delete_students.html?nid={{ row.id }}">删除</a>
- |
- <a onclick="RemoveStudent(this);" href="#">ajax删除</a>
- |
- <a href="/edit_students.html?nid={{ row.id }}">编辑</a>
- |
- <a onclick="EditStudent(this);" href="#">ajax编辑</a>
- </td>
- </tr>
- {% endfor %}
- </tbody>
- </table>
- </body>
- <script src="/static/jquery-3.1.1.js"></script>
- <script>
- function RemoveStudent(ths) {
- var nid=$(ths).parent().parent().attr('nid');
- $.ajax({
- url:'/student_del_ajax.html',
- type:'GET',
- data:{nid:nid},
- success:function (arg) {
- if (arg == 'delete successful'){
- {#window.location.reload();#}
- $(ths).parent().parent().remove();
- }
- else{
- alert(arg);
- }
- }
- })
- }
- </script>
- </html>
get_students.html
<2>add_students.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- <h3>添加学生信息</h3>
- <form method="post" action="/add_students.html">
- {% csrf_token %}
- <p>姓名<input type="text" name="StudentName" placeholder="姓名"/></p>
- <p>年龄<input type="text" name="age" placeholder="年龄"/></p>
- <p>性别: 男<input type="radio" name="gender" value="1"/>女<input type="radio" name="gender" value="0"/></p>
- <p>班级:
- <select name="cs">
- {% for row in class_list %}
- <option value={{ row.id }}>{{ row.title }}</option>
- {% endfor %}
- </select>
- </p>
- <p><input type="submit" value="提交注册"/></p>
- </form>
- </body>
- </html>
add_students.html
<3>edit_students.html
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- <h3>编辑学生信息</h3>
- <form method="post" action="/edit_students.html?nid={{ obj.id }}">
- {% csrf_token %}
- <p>姓名<input type="text" name="StudentName" value="{{ obj.StudentName }}"/></p>
- <p>年龄<input type="text" name="age" value="{{ obj.age }}"/></p>
- <p>性别:
- {% if obj.gender %}
- 男<input type="radio" name="gender" checked="checked" value="1"/>
- 女<input type="radio" name="gender" value="0"/>
- {% else%}
- 男<input type="radio" name="gender" value="1"/>
- 女<input type="radio" name="gender" checked="checked" value="0"/>
- {% endif %}
- </p>
- <p>班级:
- <select name="class_id">
- {% for row in class_list%}
- {% if row.id == obj.cs_id %}
- <option value="{{ row.id }}" selected="selected">{{ row.title }}</option>
- {% else %}
- <option value="{{ row.id }}">{{ row.title }}</option>
- {% endif %}
- {% endfor %}
- </select>
- </p>
- <p><input type="submit" value="提交修改"/></p>
- </form>
- </body>
- </html>
edit_students.html
6.学生管理系统之教师分配
1.在classes.py中增加教师分配函数set_teacher
- from django.shortcuts import render
- from django.shortcuts import redirect
- from student_manage.models import *
- def get_classes(request):
- class_list = classes.objects.all()
- return render(request,'get_classes.html',{'class_list':class_list})
- def add_calsses(request):
- if request.method == "GET":
- return render(request, 'add_classes.html')
- elif request.method == 'POST':
- title = request.POST.get('title')
- classes.objects.create(title=title)
- return redirect('/get_classes.html')
- def delete_classes(request):
- nid=request.GET.get('nid')
- classes.objects.filter(id=nid).delete()
- return redirect('/get_classes.html')
- def edit_classes(request):
- if request.method=='GET':
- nid = request.GET.get('nid','')
- obj = classes.objects.get(id=nid)
- return render(request,'edit_classes.html',{"obj":obj})
- elif request.method=='POST':
- nid = request.GET.get('nid','')
- title = request.POST.get('title')
- classes.objects.filter(id=nid).update(title=title)
- return redirect('/get_classes.html')
- def set_teacher(request):
- if request.method=='GET':
- nid = request.GET.get('nid','')
- class_obj=classes.objects.get(id=nid)
- class_teacher_list=class_obj.teacher.all()
- all_teacher_list=Teachers.objects.all()
- return render(request,'set_teacher.html',{'class_teacher_list':class_teacher_list,'all_teacher_list':all_teacher_list,'class_obj':class_obj})
- elif request.method=='POST':
- nid=request.GET.get('nid','')
- ids_str=request.POST.getlist('teacher_id','')
- # obj = classes.objects.get(id=nid)
- # obj.teacher.set(ids_str)
- obj = classes.objects.filter(id=nid).first()
- obj.teacher.set(ids_str)
- return redirect('/get_classes.html')
classes.py
2.在templates目录下建立所需的html页面文件
- <!DOCTYPE html>
- <html lang="en">
- <head>
- <meta charset="UTF-8">
- <title>Title</title>
- </head>
- <body>
- <form method="post" action="set_teacher.html?nid={{ class_obj.id }}">
- {% csrf_token %}
- <select multiple name="teacher_id">
- {% for row in all_teacher_list %}
- {% if row in class_teacher_list %}
- <option value="{{ row.id }}" selected="selected">{{ row.TeacherName}}</option>
- {% else %}
- <option value="{{ row.id }}">{{ row.TeacherName}}</option>
- {% endif %}
- {% endfor %}
- </select>
- <input type="submit" value="提交">
- </form>
- </body>
- </html>
set_teacher.html
Django_学生管理系统的更多相关文章
- 【IOS开发笔记02】学生管理系统
端到端的机会 虽然现在身处大公司,但是因为是内部创业团队,产品.native.前端.服务器端全部坐在一起开发,大家很容易做零距离交流,也因为最近内部有一个前端要转岗过来,于是手里的前端任务好像可以抛一 ...
- C程序范例(2)——学生管理系统”链表“实现
1.对于学生管理系统,能够实现的方法有许多,但是今天我们用链表的方法来实现.虽然初学者很可能看不懂,但是不要紧,这是要在整体的系统的学习完C语言之后,我才编写出的程序.所以大家不必要担心.在这里与大家 ...
- jsp学习之基于mvc学生管理系统的编写
mvc开发模式:分别是 model层 view层 Control层 在学生管理系统中,model层有学生实体类,数据访问的dao层,view层主要是用于显示信息的界面,Control层主要是servl ...
- java版本的学生管理系统
import java.awt.BorderLayout; import java.awt.Color; import java.awt.Frame; import java.awt.event.Ac ...
- 学生管理系统-火车订票系统 c语言课程设计
概要: C 语言课程设计一---学生管理系统 使使用 C 语言实现学生管理系统.系统实现对学生的基本信息和考试成绩的 管理.采用终端命令界面,作为系统的输入输出界面.采用文件作为信息存储介质. 功能描 ...
- Java学生管理系统项目案例
这是一个不错的Java学生管理系统项目案例,希望能够帮到大家的学习吧. 分代码如下 package com.student.util; import java.sql.Connection; impo ...
- Java+Mysql+学生管理系统
最近正在学java和数据库,想起以前写的学生管理系统,都是从网上下载,敷衍了事.闲来无事,也就自己写了一个,不过功能实现的不是很多. 开发语言:java: 开发环境:Mysql, java: 开发工具 ...
- JDBC学生管理系统--处理分页显示
分页的思想: 假设一共有104条数据,每页显示10条数据: select * from student limit 0,10; 页数是index,第index页,对应的sql语句是: select * ...
- JDBC-简单的学生管理系统-增删改查
结构:三层架构--mvc 三层是为了解决整个应用程序中各个业务操作过程中不同阶段的代码封装的问题,为了使程序员更加专注的处理某阶段的业务逻辑. 比如将数据库操作代码封装到一层中,提供一些方法根据参数直 ...
随机推荐
- springcloud 中文文档
spring cloud 中文文档:https://springcloud.cc/spring-cloud-dalston.html spring cloud 中文网:https://springcl ...
- K大数查询
3110: [Zjoi2013]K大数查询 Time Limit: 20 Sec Memory Limit: 512 MB Description 有N个位置,M个操作.操作有两种,每次操作如果是1 ...
- POJ 2029
二维树状数组可解此题 #include <iostream> #include <cstdio> #include <cstring> #include <a ...
- 当使用servlet输出json时,浏览器端jquery的ajax遇到parse error的问题
在使用jquery的ajax进行请求发送并由服务端的servlet返回json格式的数据内容时,假设输出内容没有正确设置,会遇到client浏览器报告parse error的问题.这个问题的解决仅仅须 ...
- 国内物联网平台初探(三) ——QQ物联·智能硬件开放平台
平台定位 将QQ帐号体系.好友关系链.QQ消息通道及音视频服务等核心能力提供给可穿戴设备.智能家居.智能车载.传统硬件等领域的合作伙伴,实现用户与设备.设备与设备.设备与服务之间的联动. 实现用户与设 ...
- mvc:view-controller直接转发页面
在springMVC中,通过@RequestMapping发送请求地址,转发到目标页面,但是,有时候想直接访问页面, 不想通过xxx.jsp直接访问页面,可以通过springmvc.xml配置文件中的 ...
- wamp服务器下安装mantis
什么是Mantis Mantis是一个BUG管理系统.主要特点如下: 1.用php写的系统,安装方便,不用像 bugzilla 那样安装那么多perl支持: 2.系统相对简单轻磅,使用简单: 3.出色 ...
- Gym-101915D Largest Group 最大独立集 Or 状态压缩DP
题面题意:给你N个男生,N个女生,男生与男生之间都是朋友,女生之间也是,再给你m个关系,告诉你哪些男女是朋友,最后问你最多选几个人出来,大家互相是朋友. N最多为20 题解:很显然就像二分图了,男生一 ...
- POJ3414 Pots
题目: 给你两个容器,分别能装下A升水和B升水,并且可以进行以下操作 FILL(i) 将第i个容器从水龙头里装满(1 ≤ i ≤ 2); DROP(i) 将第i个容器抽干 ...
- 【转】Java的可变类与不可变类
1.可变类和不可变类(Mutable and Immutable Objects)的初步定义: 可变类:当你获得这个类的一个实例引用时,你可以改变这个实例的内容. 不可变类:当你获得这个类的一个实例引 ...