继续上篇的学生注册案例。
1. urls.py
from django.urls import path
from. import views
urlpatterns = [
path('stu_sign/', views.stu_sign),
path('stu_sign/add_stu/', views.add_stu),
path('show_class/',views.show_class),
path('stu_detail/',views.stu_detail),
]
2. views.py
from django.http import HttpResponse
from django.shortcuts import render
from .models import *
# Create your views here.
def stu_sign(request):
return render(request, 'stu_sign.html')
def add_stu(request):
# 接收表单数据
sname = request.POST.get('sname')
cname = request.POST.get('cname')
coursenames = request.POST.getlist('coursename')
# 将数据保存到数据库
flag = insert_stu(sname, cname,coursenames)
# 判断是否成功
if flag:
return HttpResponse(u'添加成功!')
else:
return HttpResponse(u'添加失败!')
def show_class(request):
'''
查询所有班级信息
'''
class_list = Class.objects.all()
return render(request, 'show_class.html', {'class_list': class_list})
def stu_detail(request):
'''
查询班级下的学生信息
'''
class_id = int(request.GET.get('class_id',-1))
stu_list = Class.objects.get(class_id=class_id).student_set.all()
return render(request,'stu_detail.html', {'stu_list': stu_list})
3. 模版>show_class.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<table border="1" cellspacing="0" cellpadding="10" width="400px">
<tr>
<th>班级编号</th>
<th>班级名称</th>
<th>操作</th>
</tr>
{% for class in class_list %}
<tr>
<td>{{ forloop.counter }}</td>
<td>{{ class.class_name }}</td>
<td><a href="/stu_detail/?class_id={{ class.class_id }}">详情</a></td>
</tr>
{% endfor %}
</table>
</body>
</html>
4. 模版>stu_detail.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<table border="1" cellspacing="0" cellpadding="10" width="400px">
<tr>
<th>学号</th>
<th>姓名</th>
<th>班级</th>
<th>课程</th>
</tr>
{% for stu in stu_list %}
<tr>
<td>{{ stu.stu_id }}</td>
<td>{{ stu.stu_name }}</td>
<td>{{ stu.cls.class_name }}</td>
<td>{% for course in stu.course_set.all %}{{ course.course_name }}{% endfor %}</td>
</tr>
{% endfor %}
</table>
</body>
</html>
5. 运行效果: