Django 练习班级管理系统五 -- 查看老师列表

models.py 对应的配置

class Classes(models.Model):
    caption = models.CharField(max_length=32)

class Teacher(models.Model):
    name = models.CharField(max_length=32)
    cls = models.ManyToManyField('Classes')

修改 views.py

@auth
def handle_teacher(request):
    current_user = request.session.get('username')

    # teacher_list = models.Teacher.objects.all()
    # for obj in teacher_list:
    #     print(obj.id, obj.name, obj.cls.all())

    # 分页,获取第一页5位老师对应的记录
    teacher_list = models.Teacher.objects.filter(id__in=models.Teacher.objects.all()[0:5]).values('id', 'name', 'cls__id', 'cls__caption')
    result = {}
    for t in teacher_list:
        # 判断是否已在 result 中
        if t['id'] in result:
            # 判断 cls__id 的值是否为空
            if t['cls__id']:
                result[t['id']]['cls_list'].append({'id': t['cls__id'], 'caption': t['cls__caption']})
        else:
            # cls__id 有值
            if t['cls__id']:
                temp = [{'id': t['cls__id'], 'caption': t['cls__caption']},]
            else:
                # cls__id 没值
                temp = []
            # 给 result 字典添加值
            result[t['id']] = {
                'nid': t['id'],
                'name': t['name'],
                'cls_list': temp
            }

    return render(request, 'teacher.html', {'username': current_user, 'teacher_list': result})

修改 teacher.html

{% extends "layout.html" %}

{% block css %}

        .tag{
            display: inline-block;
            padding: 5px;
            border: 1px solid red;
            background-color: lightpink;
            cursor: pointer;
        }

{% endblock %}

{% block content %}

    <h1>老师列表</h1>
    <table border="1">
        <thead></thead>
        <tbody>
            {% for dic in teacher_list.values %}
                <tr>
                    <td>{{ dic.nid }}</td>
                    <td>{{ dic.name }}</td>
                    <td>
                        {% for c in dic.cls_list %}
                            <span class="tag" nid="{{ c.id }}">{{ c.caption }}</span>
                        {% endfor %}
                    </td>
                </tr>
            {% endfor %}
        </tbody>
    </table>
{% endblock %}

{% block js %}
    <script>
        $(function () {
            $('#menu_teacher').addClass('active');

        })

    </script>
{% endblock %}

原文地址:https://www.cnblogs.com/klvchen/p/11137387.html

时间: 2024-10-20 12:37:41

Django 练习班级管理系统五 -- 查看老师列表的相关文章

Django 练习班级管理系统二 -- 添加班级数据

在上一篇中(Django 练习班级管理系统一 https://www.cnblogs.com/klvchen/p/11078174.html),使用的是莫泰对话框的方式提交数据,适用于数据量少的操作.若业务需要数据多,数据量大的操作,可以使用单独页面进行添加,下面是具体例子: 在 classes.html 页面下修改 a 标签: <h1>班级管理</h1> <div> <input id="id_add" type="button&q

shell学习五十一天----top命令查看进程列表

top命令查看进程列表 top命令是linux下常用的性能分析工具,能实时显示系统中各个进程的资源占用状况.和win的资源管理器类似.top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态,如果在前台执行该命令,它将独占前台,知道用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最"敏感"的任务列表.该命令可以按CPU使用,内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互命令或者在个人定制文件中进行设定. t

Django中模型(五)

Django中模型(五) 六.模型查询 1.概述 查询集,表示从数据库获取的对象集合. 过滤器就是一个函数,基于所给的参数限制查询集结果.查询集可以有多个过滤器. 从sql角度来说,查询集合等价于select语句,过滤器等价于where条件. 2.查询集 A.概述 在管理器上调用过滤器方法返回查询集.查询集经过过滤器方法筛选后返回新的查询集,所以可以写成链式调用. B.惰式执行 创建查询集不会带来任何数据的访问,直到调用数据时,才会访问数据库 C.直接访问数据库的情况 迭代.序列化.与if合用

Django 练习班级管理系统一

创建项目 user_manager 和 app为 app01 models.py 为 from django.db import models # Create your models here. class Classes(models.Model): caption = models.CharField(max_length=32) class Student(models.Model): name = models.CharField(max_length=32) cls = models

Django学习笔记(五)—— 表单

疯狂的暑假学习之  Django学习笔记(五)-- 表单 参考:<The Django Book> 第7章 1. HttpRequest对象的信息 request.path                                 除域名以外的请求路径,斜杠开头                      "/hello/" request.get_host()                      主机名                              

day20 project+查看新闻列表 + 点赞 + 图片验证码 + 评论和多级评论 + 后台管理 + webSocket + kindEditor

Day20回顾: 1. 请求生命周期 2. 中间件 md = [ "file_path.classname" ] process_request[可有可无] process_response[必须有] process_request process_response process_request process_response process_request process_response process_request process_response 路由->函数 3.

【毕设】班级管理系统——易搜

[模块介绍] 在易搜中,系统提供了4中搜索方式,按学号搜索,按姓氏搜索,按性别搜索和按全部搜索.若搜索结果单一,系统会跳转到InformationFrm窗体:若搜索结果若干,则系统会跳转到MulInformationFrm窗体.易搜界面设计如下图5.7所示,搜索结果界面如图5.8(a)和图5.8(b)所示. [界面设计] [部分代码(这里以按姓氏搜索为例,代码有删改)] if (txtSearch.Text == "" && cboSearch.SelectedInde

【毕设】班级管理系统——找回密码模块

[模块介绍] 首先检测用户是否在登录状态下,若用户在登录状态下,则跳过用户名检测环节,直接进入随机密保验证和修改密码环节,修改成功后,则注销原用户登录.若用户之前并未登陆,则在随机密保验证和修改密码环节之前得先判断段所要修改的用户名是否存在.只有存在后才能进入下一环节.本设计思路来源腾讯QQ密码按密保问题修改.图5.3(a),图5.3(b)和图5.3(c)分别显示用户名检测,随机密保验证和修改密码环节的相关界面. [界面设计] [程序流程图] [核心代码] 相关参数说明: private Lis

【毕设】班级管理系统——登录模块

[登录模块介绍] 主要是处理用户的登录,赋予不同用户的不同权限.在登录模块中,系统在安全性上还增设了验证码和限制错误登录次数.主要目的是为了缓解服务器压力以及在一定程度上保护用户隐私. [界面设计] [登录错误图解] 限制错误登录次数功能说明:每名用户每次登陆初始时均有三次输入机会,一旦连续输错三次,则禁止再次输入,只能访问普通用户功能:若在一次或两次输错后但成功登陆者,输入机会将会再次重置为三次,以此类推. [程序流程图] [部分代码详解] private string UserA, PwA;