【Django 网页Web开发】10. 实战项目:靓号搜索功能(03)(保姆级图文)


欢迎关注 『Django 网页Web开发』 系列,持续更新中
欢迎关注 『Django 网页Web开发』 系列,持续更新中

搜索语句示例

    q1=models.PrettyNum.objects.filter(mobile="65345678911",id=4)
    print(q1)#<QuerySet [<PrettyNum: PrettyNum object (4)>]>

    data_dict = {"mobile": "65345678911", "id": 4}#将搜索条件单独提出来
    q2=models.PrettyNum.objects.filter(**data_dict)
    print(q2)#<QuerySet [<PrettyNum: PrettyNum object (4)>]>

搜索语句规则

大于小于和范围指定数据匹配
注意下面中间间隔是2个下划线

  • models.PrettyNum.objects.filter(id=12) # 等于12
  • models.PrettyNum.objects.filter(id__gt=12) # 大于12
  • models.PrettyNum.objects.filter(id__gte=12) # 大于等于12
  • models.PrettyNum.objects.filter(id__lt=12) # 小于12
  • models.PrettyNum.objects.filter(id__lte=12) # 小于等于12

---- 示例:检索id小于等于12

  • data_dict = {“id__lte”: 12}
  • q=models.PrettyNum.objects.filter(**data_dict)
  • print(q)

---- 范围相关的搜索

  • models.PrettyNum.objects.filter(mobile=“999”) # 等于
  • models.PrettyNum.objects.filter(mobile__startswith=“1999”) # 筛选出以1999开头
  • models.PrettyNum.objects.filter(mobile__endswith=“999”) # 筛选出以999结尾
  • models.PrettyNum.objects.filter(mobile__contains=“999”) # 筛选出包含999

---- 示例:检索mobile包含999

  • data_dict = {“mobile__contains”: “999”}
  • models.PrettyNum.objects.filter(**data_dict)

简易搜索q

-view.py

def pretty_list(request):
    """ 靓号列表 """
    data_dict = {}
    search_data=request.GET.get("q")
    if search_data:#如果传来的参数非空就搜索,反之显示所有数据
        data_dict["mobile__contains"]=search_data#是否包含指定数据

    queryset = models.PrettyNum.objects.filter(**data_dict).order_by("-level")#-level表示按照level降序排列显示
    return render(request, 'pretty_list.html',{"queryset":queryset,"search_data":search_data})


地址栏中加入?q=34即可查找手机号码中含有34的数据,如果没有q值则返回所有数据
在这里插入图片描述


带上搜索框的搜索

搜索框组件来自bootstrap,搜索完成后{{ search_data }}搜索关键词默认也留在网页

{% extends 'layout.html' %}

{% block content %}
    <div class="container">
        <div style="margin-bottom: 10px" class="clearfix">
            <a class="btn btn-success" href="/pretty/add/">
                <span class="glyphicon glyphicon-plus-sign" aria-hidden="true"></span>
                新建靓号
            </a>
            <div style="float: right;width: 300px;">
                <form method="get">
                    <div class="input-group">
                        <input type="text" name="q" class="form-control" placeholder="Search for..."
                               value="{{ search_data }}">
                        <span class="input-group-btn">
                        <button class="btn btn-default" type="submit">
                            <span class="glyphicon glyphicon-search" aria-hidden="true"></span>
                        </button>
                      </span>
                    </div>
                </form>
            </div>

        </div>
        <div class="panel panel-default">
            <!-- Default panel contents -->
            <div class="panel-heading">
                <span class="glyphicon glyphicon-th-list" aria-hidden="true"></span>
                靓号列表
            </div>

            <!-- Table -->
            <table class="table table-bordered">
                <thead>
                <tr>
                    <th>ID</th>
                    <th>号码</th>
                    <th>价格</th>
                    <th>级别</th>
                    <th>状态</th>
                    <th>操作</th>
                </tr>
                </thead>
                <tbody>
                {% for obj in queryset %}
                    <tr>
                        <th>{{ obj.id }}</th>
                        <td>{{ obj.mobile }}</td>
                        <td>{{ obj.price }}</td>
                        <td>{{ obj.get_level_display }}</td>
                        <td>{{ obj.get_status_display }}</td>
                        <td>
                            <a class="btn btn-primary btn-xs" href="/pretty/{{ obj.id }}/edit/">编辑</a>
                            <a class="btn btn-danger btn-xs" href="/pretty/{{ obj.id }}/delete/">删除</a>
                        </td>
                    </tr>
                {% endfor %}

                </tbody>
            </table>
        </div>
        <div class="clearfix">
            <ul class="pagination">
                {{ page_string }}
            </ul>

        </div>

    </div>
{% endblock %}

在这里插入图片描述
在这里插入图片描述


总结

大家喜欢的话,给个👍,点个关注!给大家分享更多有趣好玩的Python 网页Web开发知识!

版权声明:

发现你走远了@mzh原创作品,转载必须标注原文链接

Copyright 2023 mzh

Crated:2023-3-1

欢迎关注 『Django 网页Web开发』 系列,持续更新中
欢迎关注 『Django 网页Web开发』 系列,持续更新中
『01. 安装配置Django』
『02. 创建并运行一个Django项目』
『03. 初识Django』
『04. 请求和响应,网页跳转重定向,实战简易表单模拟登陆』
『05. 数据库操作,实战用户管理』
『06. 报错:You have 26 unapplied migration(s). Your project may not work properly until you apply the migra』
『07. 模板语法』
『08. 实战项目:部门和员工管理系统(01)』
『09. 实战项目:员工编辑删除功能与靓号管理(02)』
『10. 实战项目:靓号搜索功能(03)』
『11. 实战项目:分页与页码跳转功能(04)』
『12. 实战项目:分页组件的封装 面向接口编程(05)』
『13. 实战项目:添加用户时的时间选择组件(06)』
『14. 实战项目:一些面向对象的代码结构优化(07)』
『15. 实战项目:管理员增删改查,md5密码和密码重置(08)』
『16. 实战项目:BootStrap类的进一步优化(09)』
『17. 实战项目:login业务涉及cookie、session、中间件(10)』
『18. 实战项目:登录时的验证码(11)』
『19. 实战项目:初识Ajax请求(12)』
『20. 实战项目:Ajax实战之订单管理与弹出对话框(13)』
『21. 实战项目:echart数据图表(14)』
『22. 实战项目:简单的文件上传(15)』
『23. 实战项目:Excel和form和moudleForm的文件上传(16)』
【更多内容敬请期待】


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发现你走远了

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值