Django模型系统——ORM校园管理系统代码
分类:
IT文章
•
2022-05-19 18:08:03
1.models.py
from django.db import models
# Create your models here.
class Class(models.Model):
id = models.AutoField(primary_key=True) # 主键
cname = models.CharField(max_length=32) # 班级名称
first_day = models.DateField() # 开班时间
class Student(models.Model):
id = models.AutoField(primary_key=True)
sname = models.CharField(max_length=32)
cid = models.ForeignKey("Class")
detail = models.OneToOneField(to="StudentInfo", null=True)
class StudentInfo(models.Model):
height = models.CharField(max_length=4)
weight = models.CharField(max_length=4)
addr = models.CharField(max_length=32,null=True)
class Teacher(models.Model):
tname = models.CharField(max_length=32)
# cid = models.ManyToManyField(to="Class", related_name="teachers")
cid = models.ManyToManyField(to="Class")
模型系统
2.views.py视图系统
from django.shortcuts import render,reverse,redirect
from app01 import models
# Create your views here.
#-----------------------------------------------班级管理--------------------------------------------------------
def class_list(request):
class_list = models.Class.objects.all()
return render(request, "class_list.html", {"class_list": class_list})
def delete_class(request):
class_id = request.GET.get("class_id")
models.Class.objects.filter(id=class_id).delete()
return redirect(reverse("class_list"))
def add_class(request):
# 前端POST填好的新班级信息
if request.method == "POST":
cname = request.POST.get("cname")
first_day = request.POST.get("first_day")
# 还可以这么获取提交的数据,但不推荐这么写
# data = request.POST.dict()
# del data["csrfmiddlewaretoken"]
# 创建新数据的两种方式
# new_class = models.Class(cname=cname, first_day=first_day)
# new_class.save()
models.Class.objects.create(cname=cname, first_day=first_day)
# 跳转到class_list
return redirect(reverse('class_list'))
# 返回添加班级的页面
return render(request, "add_class.html")
def edit_class(request):
if request.method == "POST":
class_id = request.POST.get("id")
cname = request.POST.get("cname")
first_day = request.POST.get("first_day")
models.Class.objects.create(id=class_id, cname=cname, first_day=first_day)
return redirect(reverse("class_list"))
class_id = request.GET.get("class_id")
class_obj = models.Class.objects.filter(id=class_id)
if class_obj:
class_obj = class_obj[0]
return render(request, "edit_class.html", {"class": class_obj})
# 找不到该条记录
else:
return redirect(reverse("class_list"))
班级管理
#-----------------------------------------------学生管理--------------------------------------------------------
def student_list(request):
student_list = models.Student.objects.all()
return render(request, "student_list.html", {"student_list": student_list})
def delete_student(request, sid):
models.Student.objects.filter(id=sid).delete()
return redirect(reverse("student_list"))
def add_student(request):
if request.method == "POST":
sname = request.POST.get("sname")
class_id = request.POST.get("class_id")
models.Student.objects.create(sname=sname, cid_id=class_id)
return redirect(reverse("student_list"))
class_list = models.Class.objects.all()
return render(request, "add_student.html", {"class_list": class_list})
def edit_student(request, sid):
# 获取到编辑的学生对象
student_obj = models.Student.objects.get(id=sid)
# 获取所有的班级数据
class_list = models.Class.objects.all()
if request.method == "POST":
sname = request.POST.get("sname")
class_id = request.POST.get("class_id")
student_obj.sname = sname
student_obj.cid_id = class_id
student_obj.save()
return redirect(reverse("student_list"))
return render(request, "edit_student.html", {"student": student_obj, "class_list": class_list})
学生管理
#-----------------------------------------------老师管理--------------------------------------------------------
def teacher_list(request):
teacher_list = models.Teacher.objects.all()
return render(request, "teacher_list.html", {"teacher_list": teacher_list})
def delete_teacher(request, tid):
models.Teacher.objects.filter(id=tid).delete()
return redirect(reverse("teacher_list"))
def add_teacher(request):
if request.method == "POST":
tname = request.POST.get("tname")
class_ids = request.POST.getlist("class_id")
new_teacher = models.Teacher.objects.create(tname=tname)
# 查询出所有被选中的班级信息
class_objs = models.Class.objects.filter(id__in=class_ids)
# 将老师的授课班级设置为选中的班级, 以下四种都可以,注意什么时候加*
new_teacher.cid.set(class_objs)
# new_teacher.cid.add(*class_objs)
# new_teacher.cid.add(*class_ids)
# new_teacher.cid.set(class_ids)
new_teacher.save()
return redirect(reverse("teacher_list"))
class_list = models.Class.objects.all()
return render(request, "add_teacher.html", {"class_list": class_list})
def edit_teacher(request, tid):
teacher_obj = models.Teacher.objects.get(id=tid)
class_list = models.Class.objects.all()
if request.method == "POST":
tname = request.POST.get("tname")
class_ids = request.POST.getlist("class_id")
# 更新老师相关信息
teacher_obj.tname = tname
teacher_obj.cid.set(class_ids)
teacher_obj.save() # 一定记得更新完要保存
return redirect(reverse("teacher_list"))
return render(request, "edit_teacher.html", {"class_list": class_list, "teacher": teacher_obj})
老师管理
from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^class_list/$', views.class_list, name="class_list"),
url(r'^delete_class/$', views.delete_class, name="delete_class"),
url(r'^add_class/$', views.add_class, name="add_class"),
url(r'^edit_class/$', views.edit_class, name="edit_class"),
url(r'^student_list/', views.student_list, name="student_list"),
url(r'^delete_student/(?P<sid>d+)$',views.delete_student, name="delete_student"),
url(r'^add_student/$',views.add_student, name="add_student"),
url(r'^edit_student/(?P<sid>d+)$',views.edit_student, name="edit_student"),
url(r'^teacher_list/$',views.teacher_list, name="teacher_list"),
url(r'^delete_teacher/(?P<tid>d+)$',views.delete_teacher, name="delete_teacher"),
url(r'^add_teacher/$', views.add_teacher, name="add_teacher"),
url(r'^edit_teacher/(?P<tid>d+)$',views.edit_teacher, name="edit_teacher"),
]