redirect 家的是url也就是urls页面的
href 、action也是,
修改删除需要获取id
if endif
for endfor连着用,不可少
urls:
from django.conf.urls import url from django.contrib import admin from app.views import classes from app.views import student urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^classes.html$',classes.get_classes),#不加^访问点击页面没反应 url(r'^add_classes.html$',classes.add_classes), url(r'^del_classes.html$', classes.del_classes), url(r'^edit_classes.html$',classes.edit_classes), url(r'^student$', student.get_student), url(r'^add_student$', student.add_student), url(r'^del_student$', student.del_student), url(r'^edit_student$',student.edit_student), ]
student.py
from django.shortcuts import render from django.shortcuts import redirect from app import models def get_student(req): stu_list=models.Student.objects.all() return render(req,'get_student.html',{'stulist':stu_list}) def add_student(req): if req.method=='GET': cs_list=models.Classes.objects.all() return render(req,'add_student.html',{'cslist':cs_list}) elif req.method=='POST': u=req.POST.get('username1') a=req.POST.get('age1') g=req.POST.get('gender1') c=req.POST.get('cs1') models.Student.objects.create( username=u, age=a, gender=g, #cs=c 可以看到cs是字符串类型,c是具体数值的id,不匹配,数据库一般保存是 # cs_id即cs.id cs_id=c ) return redirect('/student') def del_student(req): nid=req.GET.get('nid') models.Student.objects.filter(id=nid).delete() return redirect('/student') def edit_student(req): if req.method == 'GET': nid=req.GET.get('nid') obj=models.Student.objects.filter(id=nid).first() cs_list=models.Classes.objects.values('id','title') return render(req, 'edit_student.html', {'obj': obj,'cslist':cs_list}) elif req.method == 'POST': nid=req.GET.get('nid') u = req.POST.get('username1') a = req.POST.get('age1') g = req.POST.get('gender1') c = req.POST.get('cs1') models.Student.objects.filter(id=nid).update( username=u, age=a, gender=g, # cs=c 可以看到cs是字符串类型,c是具体数值的id,不匹配,数据库一般保存是 # cs_id即cs.id cs_id=c ) return redirect('/student')
model.py
from django.db import models # Create your models here. class Classes(models.Model):#班级表 title=models.CharField(max_length=32) m=models.ManyToManyField('Teacheres')#加上引号,全执行完后才来执行,表的多对多 class Teacheres(models.Model):#教师表 name=models.CharField(max_length=32) class Student(models.Model): username=models.CharField(max_length=32) age=models.IntegerField() #gender=models.BooleanField()布尔值 gender = models.NullBooleanField()#可以为空的布尔值 cs=models.ForeignKey(Classes)#这个classes不用加引号,因为在上面,顺序执行
get_student.html
"en"> "UTF-8">Title "1">
{% for row in stulist %} ID 姓名 年龄 性别 班级 操作 {% endfor %} {{ row.id }} {{ row.username }} {{ row.age }} {{ row.gender }} {{ row.cs.title }} "del_student?nid={{ row.id }}">删除 | "edit_student?nid={{ row.id }}">修改
add_student.html
"en"> "UTF-8">Title {% csrf_token %}添加学生
edit——student.html
"en"> "UTF-8">Title {% csrf_token %}