前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django框架开发015期 数据的查询,根据搜索条件查询用户

Django框架开发015期 数据的查询,根据搜索条件查询用户

作者头像
刘金玉编程
发布2023-08-31 13:23:00
2600
发布2023-08-31 13:23:00
举报
文章被收录于专栏:编程创造城市编程创造城市
在之前的课程中已经介绍了通过orm方式创建数据表、模型以及页面的访问逻辑等。通过课程讲解已经能够开发用户注册页面和用户列表页面,已经对基本页面的开发有了一定的了解 。

本节课程继续讲解增删改查中的查询功能,通过这个功能的介绍,我们可以开发一个简单的数据搜索,该功能类似百度查询,当然仅仅只是最基础的数据库关键词查询功能。

开发用户查询页面,我们从实际用户查询行为的角度出发,我们需要做如下开发:

1)修改用户列表页面,增加一个查询功能;

2)增加一个搜索页面,显示搜索得到的结果;

3)开发路由,用于显示搜索信息的结果页;

4)开发一个视图函数,用于接收用户查询信息并返回查询结果。

由于开发过程的逻辑和之前注册页面和用户列表页面有些类似,这里不再过长赘述,直接描述如何去开发这个搜索页面。

第1步:修改用户列表页面

我们在ljyUserList.html页面中添加一个可以用于查询数据的控件,这个控件应该在一个form表单中,添加在用户列表标题和表格中间,添加代码如下:

代码语言:javascript
复制
<div>
    <form action="/search/" method="get">
        姓名:<input type="text" name="mykey">     <input type="submit" value="查询"> <br><br>
    </form>
</div>

整个body的html代码结果如下图所示:

启动网站后,页面效果如下图所示。

第2步:添加一张查询页面模板ljySearch.html

这张查询页面和之前用用户列表页面有些相似,只是为了后期开发更多功能,我们新增这个页面,我们也可以将这个页面的样式重新开发。

ljySearch.html模板页面代码如下所示。

代码语言:javascript
复制
<!DOCTYPE html>
{%load static%}
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>查询页面</title>
    <link rel="stylesheet" href="{%static 'css/userlist.css'%}">
</head>
<body>
<h1>用户查询页面</h1>
<div>
    <form action="/search/" method="get">
        姓名:<input type="text" name="mykey">     <input type="submit" value="查询"> <br><br>
    </form>
</div>
<div>
    查询结果如下:
</div>
<table>
    <tr>
        <th>编号</th>
        <th>账号</th>
        <th>密码</th>
        <th>姓名</th>
        <th>性别</th>
        <th>年龄</th>
    </tr>
    {%for user in userlist%}
    <tr>
        <td>{{user.userID}}</td>
        <td>{{user.username}}</td>
        <td>{{user.password}}</td>
        <td>{{user.truename}}</td>
        <td>{{user.sex}}</td>
        <td>{{user.age}}</td>
    </tr>
    {%endfor%}
</table>
</body>
</html>

第3步:添加路由

现在我们添加一个路由,使得查询提交信息到指定的视图函数中。由于这里我们是做查询信息,所以我们重新开发一个新的视图函数专门用于显示查询结果,这样的表述比较清晰。当然,有的读者可能会问:“我能不能把这个功能开发在用户列表显示的视图函数中?”我想说,当然可以的,只要将这两块用能用逻辑能够表述清楚就可以。

现在我们在路由规则的最后添加如下代码:

代码语言:javascript
复制
path('search/', views.getLjyUserByName),

在这里,我们构造了一个视图函数getLjyUserByName来获取查询数据。因此下面我们就需要开发这个视图函数了。

第4步:开发视图函数

代码语言:javascript
复制
#根据用户姓名查询获取数据结果
def getLjyUserByName(request):
    mykey=request.GET['mykey'] #接收form表单中提交的关键词
    users=LjyUser.objects.filter(truename__contains=mykey) #这里使用filter函数从数据库中过滤输入的关键词,truename__contains表示字段truename上进行匹配,与之相连的__contains表示包含的意思,这样总体就会返回查询结果就是包含输入关键词的真实姓名的所有记录
    return render(request,'ljyblog/ljySearch.html',{'userlist':users})#将查询结果传递给查询结果页面,类似之前的用户信息列表

我们在代码中已经对查询整个过程的语句已经做了详细的解释。主要在这个查询中,我们使用到了filter函数的功能,用来过滤指定字段的数据,结果返回一个列表。如果查询不到,结果就返回一个长度为0的空列表。在filter方法内,我们使用了真实姓名truename这个字段去进行查询,传入的mykey就是输入的姓名的关键词。为了能更方便地实现查询功能,我们在这里使用模糊查询的参数,这个参数就是contains,使用格式为:

字段名称__contains

注意,这里的符号__是两个下划线,千万不要漏写哦!那么总体的这个意思是指包含后面的mykey这个变量的值的意思,这样我们就实现模糊查询了!

为了测试,我们现在到注册页面随机注册一些用户数据,使得数据库如下数据。

现在,我们测试输入一个“刘”,就可以输出测试结果了。

如果我们输入“金”,那么就只能出现一行数据了,因为现在数据库表里只有“刘金玉”姓名这样一个用户。

至此,我们查询页面开发完成。

相关文章:

  1. python中函数的可变参数
  2. C语言和C#语言有什么区别吗?【C#编程1000问】
  3. Django框架开发001期 Python+Django开发教程,开启你的第一个django网站应用
  4. Django框架开发002期 Python编程利用PyCharm专业版和社区版开发网站
  5. Django框架开发003期 Python+Django初步自主开发配置和分析网站项目
  6. Django框架开发004期 Python编程调用自定义Django框架template模板网页
  7. Django框架开发005期 Python调用template模板网页开发调用静态资源
  8. Django框架开发006期 使用sqlite3命令行工具管理数据库
  9. Django框架开发007期 使用sqlitestudio管理sqlite数据库
  10. Django框架开发008期 Sqlite数据库常用SQL脚本
  11. Django框架开发009期 sqlite数据库添加数据、查询数据操作,insert以及select语句的使用
  12. Django框架开发010期 sqlite修改数据、删除数据操作,数据库update以及delete语句的使用
  13. Django框架开发011期 Django框架开发Sqlite数据库,数据模型的创建,用户表模型
  14. Django框架开发012期 Django框架开发Sqlite数据库,数据表的生成,命令行生成用户表
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 编程创造城市 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档