添加模型类
在model.py里添加模型类,增加外键,并生成迁移,运行迁移。
from django.db import models
# Create your models here.
class Major(models.Model):
major_name = models.CharField(max_length=20,verbose_name='专业名')
class Meta:
verbose_name = '专业表'
verbose_name_plural = verbose_name
db_table = 'major'
def __str__(self):
return self.major_name
class Student(models.Model):
stu_name = models.CharField(max_length=20,verbose_name='姓名')
score = models.IntegerField(verbose_name='成绩')
sex = models.CharField(max_length=3,verbose_name='性别')
#增加外键
major = models.ForeignKey(Major,on_delete=models.CASCADE,verbose_name='专业编号')
class Meta:
verbose_name = '学生表'
verbose_name_plural = verbose_name
db_table = 'student'
def __str__(self):
return self.stu_name
在admin.py里注册模型类。注册超级用户,并增加数据
from django.contrib import admin
from student.models import Major,Student
# Register your models here.
admin.site.register(Major)
admin.site.register(Student)
# 终端里注册超级用户
python manage.py createsuperuser
展示页面
展示专业页面
Views.py
class MajorView(View):
def get(self,request):
major_data = Major.objects.all()
content = {
'majors' : major_data
}
return render(request,'major.html',content)
注册路由在urls.py
from django.urls import path
from student import views
urlpatterns = [
path('major/',views.MajorView.as_view()),
]
展示页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h3>专业表</h3>
<table border="1px" width="200px">
<tr>
<th>编号</th>
<th>专业名称</th>
</tr>
{% for major in majors %}
<tr>
<th>{{ major.id }}</th>
<th><a href="/student/{{ major.id }}/">{{ major.major_name }}</a></th>
</tr>
{% endfor %}
</table>
</body>
</html>
展示学生页面
class StudentView(View):
def get(self,request,id):
student_data = Student.objects.filter(major_id = id)
content = {
'students' : student_data
}
return render(request,'student.html',content)
注册路由在urls.py
from django.urls import path
from student import views
urlpatterns = [
path('student/<int:id>/',views.StudentView.as_view()),
]
展示页面
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h3>学生表</h3>
<table border="1px" width="500px">
<tr>
<th>编号</th>
<th>姓名</th>
<th>成绩</th>
<th>性别</th>
<th>专业编号</th>
<th>操作</th>
</tr>
{% for student in students %}
<tr>
<th>{{ student.id }}</th>
<th>{{ student.stu_name }}</th>
<th>{{ student.score }}</th>
<th>{{ student.sex }}</th>
<th>{{ student.major }}</th>
<th>
<a href="/delete/{{ student.id }}/">删除</a>
<a href="/update/{{ student.id }}/">修改</a>
</th>
</tr>
{% endfor %}
</table>
</body>
</html>
进行增删改查操作
增加
可以在专业页面下边写post方法
def post(self,request):
name = request.POST.get('name')
score = request.POST.get('score')
sex = request.POST.get('sex')
major = request.POST.get('major')
try:
Student.objects.create(
stu_name = name,
score = score,
sex = sex,
major_id = major
)
except Exception as e:
print(e)
return HttpResponse('添加失败')
return redirect('/major/')
在专业页面下边写添加表单
<form method="post">
{% csrf_token %}
姓名:<input type="text" name="name"><br>
成绩:<input type="text" name="score"><br>
性别:<input type="text" name="sex"><br>
专业编号:<input type="text" name="major"><br>
<input type="submit" value="添加">
</form>
删除
class DeleteView(View):
def get(self,request,id):
Student.objects.filter(id=id).delete()
return redirect('/major/')
注册动态路由
from django.urls import path
from student import views
urlpatterns = [
path('delete/<int:id>/',views.DeleteView.as_view()),
]
在学生页面后边增加删除操作
<a href="/delete/{{ student.id }}/">删除</a>
修改
class UpdateView(View):
def get(self,request,id):
try:
student_data = Student.objects.get(id = id)
content = {
'students' : student_data
}
except Exception as e:
print(e)
return HttpResponse('获取数据失败')
return render(request,'update.html',content)
def post(self,request,id):
name = request.POST.get('name')
score = request.POST.get('score')
sex = request.POST.get('sex')
major = request.POST.get('major')
try:
Student.objects.filter(id=id).update(
stu_name = name,
score = score,
sex = sex,
major = major
)
except Exception as e:
print(e)
return HttpResponse('修改失败')
return redirect('/major/')
注册动态路由
from django.urls import path
from student import views
urlpatterns = [
path('update/<int:id>/',views.UpdateView.as_view())
]
在学生页面后边增加删除操作
<a href="/update/{{ student.id }}/">修改</a>