django---班级信息及学生详情案例

继续上篇的学生注册案例。

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. 运行效果:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值