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

在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"] = keyvalueprint("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"] = keyvalueprint("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.mzph.cn/news/881758.shtml

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

相关文章

Redis 其他类型 渐进式遍历

我们之前已经学过了Redis最常用的五个类型了&#xff0c;然而Redis还有一些在特定场景下比较好用的类型 Redis最关键的五个数据类型&#xff1a; 上面的类型是非常常用&#xff0c;很重要的类型。 除此之外的其他类型不常用&#xff0c;只是在特定的场景能够发挥用处&#…

无极低码课程【java(jdk)windows下安装及环境变量配置】

在Windows环境中安装JDK 7教程 Java Development Kit (JDK) 是开发Java应用程序所必需的工具包。本教程将指导您在Windows操作系统上安装JDK 7。 准备工作 下载JDK 7安装包 访问 Oracle官方网站 下载JDK 8的安装包。选择适合您操作系统的安装包(例如 jdk-7u80-windows-x64.ex…

vmware虚拟机 报错:客户机操作系统已禁用 CPU,请关闭或重置虚拟机 的解决方法

打开cpu虚拟化全部进行勾选 ctrl e 进行关机 勾选上打开就好了 如果没有那个选项 关机>打开虚拟机>管理>更改硬件兼容性> 往小处改改> >更改此虚拟机

[LeetCode] 515. 在每个树行中找最大值

题目描述&#xff1a; 给定一棵二叉树的根节点 root &#xff0c;请找出该二叉树中每一层的最大值。 示例1&#xff1a; 输入: root [1,3,2,5,3,null,9] 输出: [1,3,9]示例2&#xff1a; 输入: root [1,2,3] 输出: [1,3]提示&#xff1a; 二叉树的节点个数的范围是 [0,10…

基于SpringBoot的个性化健康建议平台

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理基于智能推荐的卫生健康系统的相关信息成为…

OpenTrans

比较的方法Cat-Seg不好复现

Spring 实现 3 种异步流式接口,干掉接口超时烦恼

大家好&#xff0c;我是小富&#xff5e; 如何处理比较耗时的接口&#xff1f; 这题我熟&#xff0c;直接上异步接口&#xff0c;使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性&#xff0c;处理结果仅返回单个值。在某…

任务与微任务

JavaScript 本质上是一门单线程语言。自从定时器&#xff08;setTimeout() 和 setInterval()&#xff09;加入到 Web API 后&#xff0c;浏览器提供的 JavaScript 环境就已经逐渐发展到包含 任务调度 、 多线程应用开发 等强大的特性。 JavaScript 执行上下文 JavaScript 代码…

幸运7游戏模拟 python

题目&#xff1a; 幸运"7"游戏,用计算机模拟掷骰子的过程&#xff0c;测算两个骰子点数之和为7的概率。 游戏规则是你丢两个骰子&#xff0c;如果其点数之和为7你就赢4元&#xff0c;不是7你就输1元。 假设你刚开始有10元&#xff0c;当全部输掉为0元的时候游戏结…

【网络安全】1,600$:Auth0 错误配置

未经许可,不得转载。 文章目录 前言正文漏洞案例修复建议前言 Auth0 是一个广泛用于网站和应用程序的身份验证平台,负责管理用户身份并确保其服务的安全访问。该平台提供了多种工作流程,以无缝集成登录和注册流程。 在 Auth0 中创建新应用时,注册选项默认启用。当系统禁用…

Android 无Bug版 多语言设计方案!

出海业务为什么要做多语言&#xff1f; 1.市场扩大与本地化需求&#xff1a; 通过支持多种语言&#xff0c;出海项目可以触及更广泛的国际用户群体&#xff0c;进而扩大其市场份额。 本地化是吸引国际用户的重要策略之一&#xff0c;而语言本地化是其中的核心。使用用户的母语…

c语言字符函数

1&#xff0c;字符分类函数&#xff1a; 例如&#xff1a;写一个代码将字符串中的小写字母转化成大写字母 就可以用到上述islower函数判断字符是否是小写 2.字符转换函数 c语言提供了两个字符转换函数 1.int tolower (int c); //将输入进去的大写字母转化成小写 2,int …

IRP默认最小流程

IRP是Windows内核中的一种非常重要的数据结构。上层应用程序与底层驱动程序通信时&#xff0c;应用程序会发出I/O请求&#xff0c;操作系统将相应的I/O请求转换成相应的IRP&#xff0c;不同的IRP会根据类型被分派到不同的派遣例程中进行处理。 irp相当于R3下的消息&#xff0c…

rtsp协议:rtsp协议参数介绍

目的&#xff1a; 实时流协议&#xff08;RTSP&#xff09;用于建立和控制单个或多个时间同步的连续媒体流&#xff0c;例如音频和视频。RTSP 通常不负责实际传输这些连续的媒体流&#xff0c;但可以将连续媒体流与控制流进行交错传输&#xff08;参见第 10.12 节&#xff09;。…

【K8S系列】Kubernetes 集群中的网络常见面试题

在 Kubernetes 面试中,网络是一个重要的主题。理解 Kubernetes 网络模型、服务发现、网络策略等概念对候选人来说至关重要。以下是一些常见的 Kubernetes 网络面试题及其答案,帮助你准备面试。 1. Kubernetes 的网络模型是什么样的? 问题: Kubernetes 的网络模型是怎样的?…

学习Redisson实现分布式锁

官网&#xff1a;https://redisson.org/ 官方文档&#xff1a;https://redisson.org/docs/getting-started/ 官方中文文档&#xff1a;https://github.com/redisson/redisson/wiki/%E7%9B%AE%E5%BD%95 1、引入依赖 <!--redisson--> <dependency><groupId>or…

金融大数据平台总体技术

目录 金融大数据平台应用场景风险管理 场景描述解决方案​​​​​​​市场营销 ​​​​​​​场景描述解决方案​​​​​​​金融大数据信息价值链​​​​​​​金融大数据平台总体目标金融大数据平台功能技术要求​​​​​​​ ​​​​​​​概述数据接入功能要求 ​​…

Git 根据远程分支拉取并创建本地分支

文章目录 1 关联远程仓库2 获取最新更改&#xff0c;并创建分支3 clone时直接指定远程分支 1 关联远程仓库 git remote add remote_repo ssh:git***.git2 获取最新更改&#xff0c;并创建分支 查看本地分支和远程分支 git branch -a获取最新更改 git fetch remote_repo根据…

创建读取比特币1P类型地址

创建读取比特币1P类型地址 比特币的地址类型有多种&#xff0c;其中 P2TR&#xff08;Pay-to-Taproot&#xff09;地址是基于最近的升级&#xff08;Taproot&#xff09;引入的一个新类型。本文将介绍如何创建和读取比特币的 1P 类型地址&#xff0c;主要通过 JavaScript 和相…

谁在窥探我们的网络数据?——在未经许可下获取用户上网数据的情形与维权指南

在数字化时代&#xff0c;网络数据不仅是商业价值的金矿&#xff0c;更是用户隐私的敏感部分。然而&#xff0c;有时用户的上网数据可能会在未经知情与允许的情况下被收集甚至滥用。这篇文章将详细探讨哪些机构在何种情况下可以合法获取用户上网数据、用户如何通过法律手段维护…