07 django管理系统 - 部门管理 - 搜索部门

news2025/1/13 10:11:08
在dept_list.html中,添加搜索框
    <div class="container-fluid">
        <div style="margin-bottom: 10px" class="clearfix">
            <div class="panel panel-default">
                <!-- Default panel contents -->
                <div class="panel-heading">
                    <a class="btn btn-primary" href="/dept/add/" role="button">添加部门</a>

                    <!--因为涉及到提交以及数据路径拼接,所以需要一个form表单,method为get-->
                    <div style="float: right">
                        <form class="form-inline" action="/dept/search/" method="get">
                            <!--添加搜索框-->
                            <!--name=q 非常的重要-->

                            <input type="text" class="form-control" name="q" placeholder="请输入要搜索的部门"
                                   aria-label="Recipient's username" aria-describedby="button-addon2">
                            <button class="btn btn-outline-secondary" type="submit" id="button-addon2">搜索
                            </button>

                        </form>
                    </div>
                </div>


                <div class="panel-body">
                    <div style="float: left">
                        <p>部门列表</p>
                    </div>
                    <!-- Table -->
                    <table class="table">
                        <thead>
                        <tr>
                            <th>ID</th>
                            <th>name</th>
                            <th>head</th>
                            <th>phone</th>
                            <th>email</th>
                            <th>address</th>
                            <th>操作</th>
                        </tr>
                        </thead>
                        <tbody>
                        {% for obj in queryset %}
                            <tr>
                                <td>{{ obj.id }}</td>
                                <td>{{ obj.name }}</td>
                                <td>{{ obj.head }}</td>
                                <td>{{ obj.phone }}</td>
                                <td>{{ obj.email }}</td>
                                <td>{{ obj.address }}</td>

                                <td>
                                    <a class="btn btn-success" href="/dept/{{ obj.id }}/edit_detail/"
                                       role="button">编辑部门</a>
                                    <a class="btn btn-danger" href="/dept/{{ obj.id }}/delete/" role="button">删除部门</a>
                                </td>
                            </tr>

                        {% endfor %}
                        </tbody>
                    </table>
                    {% if error %}
                        <div style="color: red;">
                            {{ error }}
                        </div>
                    {% endif %}
                </div>
            </div>
        </div>
    </div>

效果如下:

 通过action="/dept/search/",我们需要配置URL

urlpatterns = [
    # 部门管理
    path("dept/list/", dept.dept_list),
    path("dept/add/", dept.dept_add),
    path("dept/<int:nid>/edit_detail/", dept.dept_editdetail),
    path("dept/<int:nid>/delete/", dept.dept_delete),
    path("dept/search/", dept.dept_search),

]

接着去定义函数dept_search()的业务逻辑

def dept_search(request):
    """
    实现部门搜索功能的视图函数。

    此函数根据用户提交的搜索关键字,查询并返回匹配的部门列表。
    如果没有提供关键字,则返回所有部门的列表。

    参数:
    - request: HttpRequest对象,包含了请求的所有数据。

    返回:
    - 渲染后的'dept_list.html'模板,包含搜索结果或错误信息。
    """
 
    data_dict = {}  # 首先定义一个空的字典
    keyvalue = request.GET.get("q")  # 取到关键字
    print("keyvalue", keyvalue)
    if keyvalue:
        data_dict["name__contains"] = keyvalue
        print("data_dict", data_dict)
        res = models.Dept.objects.using("default").filter(**data_dict)
        print("res", res)

        if not res.exists():
            # 返回错误信息
            print("未找到匹配的部门,请输入正确的部门名称")
            return render(request, 'dept_list.html', {"error": "未找到匹配的部门,请输入正确的部门名称"})

        queryset = res.order_by("-id")
        print("queryset", queryset)
        return render(request, 'dept_list.html', {"queryset": queryset})

我们尝试搜索一下:

1)我搜索正确的部门,比如我搜2病区,注意看调试情况

 我们可以看到访问的具体情况,看红框

2) 假设我搜索空的

报错了,我们可以尝试修改代码

因为q没有默认值,这种没传值的情况下,我们直接显示全部列

"""搜索部门"""


def dept_search(request):
    """
    实现部门搜索功能的视图函数。

    此函数根据用户提交的搜索关键字,查询并返回匹配的部门列表。
    如果没有提供关键字,则返回所有部门的列表。

    参数:
    - request: HttpRequest对象,包含了请求的所有数据。

    返回:
    - 渲染后的'dept_list.html'模板,包含搜索结果或错误信息。
    """

    data_dict = {}  # 首先定义一个空的字典
    keyvalue = request.GET.get("q")  # 取到关键字
    print("keyvalue....", keyvalue)
    if keyvalue:
        data_dict["name__contains"] = keyvalue
        print("data_dict", data_dict)
        res = models.Dept.objects.using("default").filter(**data_dict)
        print("res", res)

        if not res.exists():
            # 返回错误信息
            print("未找到匹配的部门,请输入正确的部门名称")
            return render(request, 'dept_list.html', {"error": "未找到匹配的部门,请输入正确的部门名称"})

        queryset = res.order_by("-id")
        print("queryset", queryset)
        return render(request, 'dept_list.html', {"queryset": queryset})

    # 如果考虑的全面一点,如果q没被传值,则查询全部
    if keyvalue == "":
        res = models.Dept.objects.using("default").all()
        print("qis'',res is..", res)
        context = {
            'queryset': res
        }
        queryset = res.order_by("-id")
        print("queryset", queryset)
        return render(request, 'dept_list.html', {"queryset": queryset})

注意下调试的情况

可以看到输入为空的时候,也是可以查询到数据的

3)输入错误信息,即非部门信息,进行搜索

这样,搜索的功能,我们就完成了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2215169.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

工程文件参考——STM32+HAL+SPI主从机通讯

文章目录 前言CubeMX设置SPI设置NSS设置 SPI从机代码SPI主机代码 前言 关于如何简单的写一个稳定的SPI主从机通讯&#xff0c;思路很简单 1、SPI高速传输的时候很容易出现错位之类的问题&#xff0c;CRC的校验首先是必要的。在STM32中SPI使用DMA通讯可以自动执行CRC的校验&…

路由器原理和静态路由配置

一、路由器的工作原理 根据路由表转发数据 接收数据包→查看目的地址→与路由表进行匹配找到转发端口→转发到该端口 二、路由表的形成 它是路由器中维护的路由条目的集合&#xff0c;路由器根据路由表做路径选择&#xff0c;里面记录了网段ip地址和对应下一跳接口的接口号。…

人工智能实训室建设的必要性

在当今科技迅猛发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;已不再局限于科幻电影的虚构情节&#xff0c;而是作为一股颠覆性力量&#xff0c;深刻影响着全球经济、社会乃至文化的发展。随着《新一代人工智能发展规划》等政策的出台&#xff0c;中国已明确将人工…

RA6M5——GPIO

文章目录 GPIO输入输出RASC图形化配置输出模式&#xff1a;输入模式&#xff1a;配置选项&#xff1a; 接口函数实例代码&#xff1a; GPIO输入输出 RASC图形化配置 输出模式&#xff1a; 输入模式&#xff1a; 配置选项&#xff1a; 配置项取值/描述Model “Input mode”&a…

疾病防控|基于springBoot的疾病防控综合系统设计与实现(附项目源码+论文+数据库)

私信或留言即免费送开题报告和任务书&#xff08;可指定任意题目&#xff09; 目录 一、摘要 二、相关技术 三、系统设计 四、数据库设计 五、核心代码 六、论文参考 七、源码获取 一、摘要 在如今社会上&#xff0c;关于信息上面的处理&#xff0c;没有任何…

离线安装bitnami-gitlab8.8.4+汉化

注意&#xff1a; 常规安装gitlab需要联网&#xff0c;而按装bitnami-gitlab无需联网(bitnami-gitlab用于内网环境无法联网时安装gitlab&#xff0c;两者是一个东西只是名字不一样)bitnami-gitlab-8.8.4版本可以汉化成功新用户注册账户无需激活也可以直接登录&#xff0c;因为…

thingsboard3.8的运行使用——设备管理与遥感数据测试

1、首先增加设备配置&#xff0c;如下&#xff1a; 建立一个定位器的设备&#xff0c;临时先用默认规则链&#xff0c;不过正常应该建立单独的定位器规则链 传输配置如下&#xff1a; 使用MQTT协议&#xff0c;相应的topic采用默认的方式 这里告警先不设置&#xff0c;后续到…

十二、数据库其他调优策略

文章目录 1. 数据库调优的措施1.1 调优的目标1.2 如何定位调优问题1.3 调优的维度和步骤1.3.1 选择合适的DBMS1.3.2 优化表设计1.3.3 优化逻辑查询1.3.4 优化物理查询1.3.5 使用 Redis 或 Memcached 作为缓存1.3.6 库级优化2. 优化MySQL服务器2.1 优化服务器硬件2.2 优化MySQL的…

Piktures 2.17 | 高效相册管理工具

Piktures是一款专注于简洁、高效、隐私保护的安卓相册管理应用。凭借其简洁美观的用户界面、强大的功能和出色的隐私保护能力&#xff0c;已成为众多安卓用户的首选工具。支持云存储同步、多样化的文件管理方式、安全保险箱以及无广告的纯净体验&#xff0c;不仅提高了用户的管…

使用IDEA和vecode创建vue项目并启动

一、使用IDEA创建Vue项目 一、打开IDEA下载Vue插件 打开IDEA的设置找到插件并查找到下载Vue.js这个插件 二、用IDEA创建Vue项目 新建项目并选择到Vue生成器 我这是IDEA自带的 创建项目非常迅速 端口号&#xff08;默认&#xff09;&#xff1a;5173 版本是3.x 启动项目…

Linux,busybox构建根文件,详细讲如何,配置etc/init.d/rcS*,etc/rc.d/rc*.d,inittab,fstab(二)

上面一篇&#xff0c;etc/init.d/rcS&#xff0c;inittab&#xff0c;fstab&#xff0c;讲的稍微不够仔细 一、BusyBox简介 在构建根文件系统之前&#xff0c;我们先来看一下根文件系统里面大概都有些什么内容&#xff0c;以Ubuntu为例&#xff0c;根文件系统的目录名字为‘/…

数据库实验3视图

10-1 创建视图计算学生课程平均分 现有一个学生数据库&#xff0c;内包含学生表&#xff08;Student&#xff09;、课程表&#xff08;Course&#xff09;和选修表&#xff08;SC&#xff09;。 在每一学年&#xff0c;学生处需要统计每位学生的学习情况&#xff0c;以便进行…

sicp每日一题[2.45]

Exercise2.45 r i g h t − s p l i t right-split right−split and u p − s p l i t up-split up−split can be expressed as instances of a general splitting operation. Define a procedure s p l i t split split with the property that evaluating (define right-…

探索秘境:如何使用智能体插件打造专属的小众旅游助手『小众旅游探险家』

文章目录 摘要引言智能体介绍和亮点展示介绍亮点展示 如何制作智能体可能会遇到的几个问题快速调优指南总结未来展望 摘要 本文将详细介绍如何使用智能体平台开发一款名为“小众旅游探险家”的旅游智能体。通过这款智能体&#xff0c;用户可以探索冷门旅游路线和独特的旅行体验…

Element-ui官方示例(Popover 弹出框)

Element-ui官方示例&#xff08;Popover 弹出框&#xff09;&#xff0c;好用的弹出框。 使用 vue-cli3 我们为新版的 vue-cli 准备了相应的​Element 插件​&#xff0c;你可以用它们快速地搭建一个基于 Element 的项目。 使用 Starter Kit 我们提供了通用的项目模版&#…

Pastemate:从高效复制到精准倒数日,重塑时光体验

下载地址&#xff1a;PasteMatePasteMatehttp://119.45.216.236/ 在信息如潮奔涌的时代&#xff0c;复制粘贴工具 Pastemate 早已成为我们得力的助手。如今&#xff0c;它更是大胆创新&#xff0c;融入倒数日功能&#xff0c;宛如一场科技与生活的奇妙交融&#xff0c;即将开启…

大商创(移动端) -- day01

插件&#xff1a;npm i axios less less-loader vue-router3 amfe-flexible postcss postcss-pxtorem vant2 移动端的适配 使用 postcss postcss-pxtorem 这个插件是用来把px转换成rem 使用amfe-flexible 插件兼容不同设备 使用步骤 1.下载这两个插件 2.在mian.js中引入 …

Rust 语言持续崛起,即将冲击 TIOBE 指数前十,能否成为编程语言新王者?

Rust 语言持续崛起&#xff0c;即将冲击 TIOBE 指数前十&#xff0c;能否成为编程语言新王者&#xff1f; 2024 年 10 月&#xff0c;全球编程语言 TIOBE 排行榜再次更新&#xff0c;各大编程语言在各自领域中继续发挥着独特的优势。官方的标题是&#xff1a; Rust排名稳步攀升…

自监督行为识别-时空线索解耦(论文复现)

自监督行为识别-时空线索解耦&#xff08;论文复现&#xff09; 本文所涉及所有资源均在传知代码平台可获取 文章目录 自监督行为识别-时空线索解耦&#xff08;论文复现&#xff09;引言论文概述核心创新点双向解耦编码器跨域对比损失的构建结构化数据增强项目部署准备工作数据…

GDB基本使用指南

什么是 GDB&#xff1f; GDB&#xff08;GNU Debugger&#xff09;是一个强大的调试工具&#xff0c;主要用于调试 C、C 和其他语言编写的程序。 它让我们可以监控、控制程序的执行&#xff0c;从而查找并修复错误。 安装 GDB ubuntu上一条命令可以搞定&#xff1a; sudo …