student学生信息表增删改

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 %} {% endfor %}
ID 姓名 年龄 性别 班级 操作
{{ 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 %}
 

添加学生

"/add_student"method="POST">

"text"name="username1"placeholder="学生姓名">

"text"name="age1"placeholder="年龄">

{#

#}

男:"radio"name="gender1"value="1"> 女:"radio"name="gender1"value="0">

{#

#}

"submit"value="提交">

edit——student.html


"en">

    "UTF-8">
    Title


{% csrf_token %}
"edit_student?nid={{ obj.id }}"method="POST">

"text"name="username1" value="{{ obj.username }}">

"text"name="age1"value="{{ obj.age }}">

{% if obj.gender %} 男:"radio"name="gender1"checked="checked"value="1"> 女:"radio"name="gender1"value="0"> {% else %} 男:"radio"name="gender1"value="1"> 女:"radio"name="gender1"value="0"checked="checked"> {% endif %}

"submit"value="提交">

 

转载于:https://www.cnblogs.com/wfl9310/p/9443130.html

你可能感兴趣的:(student学生信息表增删改)