向表中增加数据:
class AddStudent(View):
def post(self,request):
name = request.POST.get('name')
height = request.POST.get('height')
face = request.POST.get('face')
teacher = request.POST.get('teacher')
try:
Student.objects.create(
stu_name=name,
height=height,
face=face,
teacher_id=teacher
)
except Exception as e:
print(e)
return HttpResponse("添加失败")
return redirect('/tall/')
删除数据:
class Delete(View):
# 根据学生id删除学生信息:
def get(self,request,id):
#方案1:重定向老师页面
# Student.objects.filter(id=id).delete()
# return redirect('/tall/') #重定到老师页面
# 方案2:重定向学生页面
stu = Student.objects.get(id=id)
tea_id = stu.teacher_id #获取老师id
stu.delete() #删除数据
return redirect(f'/stu/{tea_id}/')
修改数据:
class Update(View):
# 展示要更新的学生信息:
def get(self,request,id):
data = Student.objects.get(id=id)
return render(request,'index.html',{'i':data})
# 根据id修改学生信息:
def post(self,request,id):
name = request.POST.get('name')
height = request.POST.get('height')
face = request.POST.get('face')
teacher = request.POST.get('teacher')
try:
Student.objects.filter(id=id).update(
stu_name=name,
height=height,
face=face,
teacher_id=teacher
)
except Exception as e:
print(e)
return HttpResponse("修改失败")
return redirect('/tall/')
查找数据:
class Select(View):
def get(self,request):
name = request.GET.get('name')
try:
data = Student.objects.get(stu_name__contains=name)
except Exception as e:
print(e)
return HttpResponse("数据不存在")
return HttpResponse(f'查找到的数据为{data.stu_name},{data.height},{data.face},{data.teacher}')
book = models.ForeignKey(BookInfo, on_delete=models.CASCADE, verbose_name=‘图书’) # 外键
# 跳转数据
class StudentView(View):
# 根据老师id展示对应的学生的信息
def get(self,request,id):
data = Student.objects.filter(teacher_id=id)
return render(request,'student.html',{'i':data})
path('tall/',views.Tall.as_view()),
# 动态路由,参数id为老师id,根据老师id展示对应的学生
path('stu/<int:id>/',views.StudentView.as_view()),
# 动态路由:参数id为学生id,根据学生id删除对应的学生
path('del/<int:id>/',views.Delete.as_view()),
# 静态路由:添加学生信息:
path('add/',views.AddStudent.as_view()),
# 动态路由,根据学生id动态更新学生信息:
path('update/<int:id>/',views.Update.as_view()),
# 静态路由,根据学生姓名,搜索学生信息:
path('select/',views.Select.as_view())