【银角大王——Django课程——靓号搜索实现/单独一篇】

搜索框功能实现

靓号搜索

在Django框架中搜索功能实现------底层就是模糊查询

  1. 数字条件用法
  2. 字符串条件用法
  3. 字典也可以包含多个条件用法
python 复制代码
#在Django框架中数字条件
models.PrettyNum.objects.filter(id=12)#等于12
model.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

#对于字符串条件
models.PrettyNum.objects.filter(mobile="999")#等于
models.PrettyNum.objects.filter(mobile__startwith="1999")#筛选以1999开头
models.PrettyNum.objects.filter(mobile__endswith="999")#筛选以999结尾
models.PrettyNum.objects.filter(mobile__contains="999")#筛选出包含999的数据
#也可以使用字典------------字典也可以包含多个条件
data_dict={"mobile__contains":"999"}
models.PrettyNum.objects.filter(**data_dict)

添加一个搜索框,使用bootstrap框架

将GO!修改成一个放大镜


整个页面,代码如下

html 复制代码
{% 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表单------添加form表单------添加form表单-->
                <form method="get">
                            <div class="input-group">

<!--                                使得name="q",传递值-->
<!--                                给input框设置一个默认的值------value="{{search_data}}"------将用户输入的值保留在框内,不会因为跳转而消失-->
                                  <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><!-- /input-group -->
                </form>
            </div>



      </div>


    <div class="panel panel-default">
      <!-- Default panel contents -->
      <div class="panel-heading">
        <span class="glyphicon glyphicon-list" aria-hidden="true"></span>
        靓号列表
      </div>
      <div class="panel-body">
        <p>欢迎进入到靓号管理页面,请安全操作!</p>
      </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>
              <td>{{obj.id}}</td>
              <td>{{obj.mobile}}</td>
              <td>{{obj.price}}</td>
<!--              显示choices-->
              <td>{{obj.get_level_display}}</td>
              <td>{{obj.get_status_display}}</td>

              <td>
<!--                Django框架中传递参数的正则表达式-->
              <a class="btn btn-primary btn-xs"  href="/pretty/{{obj.id}}/edit/">编辑</a>
<!--                通过get请求传递参数跳转页面-->
              <a class="btn btn-danger btn-xs" href="/pretty/{{obj.id}}/delete/" >删除</a>
              </td>
          </tr>
          {% endfor %}
        </tbody>
      </table>
    </div>



  </div>



{% endblock %}

搜索框代码如下:------与上面的a标签平级

html 复制代码
<div style="float:right ;width:300px;">

                <form method="get">
                            <div class="input-group">

<!--                                使得name="q",传递值-->
<!--                                给input框设置一个默认的值------value="{{search_data}}"------将用户输入的值保留在框内,不会因为跳转而消失-->
                                  <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><!-- /input-group -->
                </form>
            </div>

靓号列表函数代码解释

代码如下:

python 复制代码
#靓号列表
def pretty_list(request):

    #搜索时没有条件就传入空字典,也就相当于.all()
    data_dict={}

    #构件搜索
    #获取q值------名字为q的input框的值
    #get中参数------有值拿值,没有值传空
    search_data=request.GET.get('q',"")
    if search_data:
        # 为列表赋值
        data_dict["mobile__contains"] = search_data

    #将筛选的值通过filter(**data_dict)传递过去
    queryset=models.PrettyNum.objects.filter(**data_dict).order_by("-level")

    #可以进行排序
    # models.PrettyNum.objects.all().order_by("-id")
    #按照等级来显示
    # queryset=models.PrettyNum.objects.all().order_by("-level")
    return render(request,'pretty_list.html',{"queryset":queryset,"search_data":search_data})

效果演示

相关推荐
DarkAthena几秒前
【GaussDB】深度解析:创建存储过程卡死且无法Kill会话的疑难排查
数据库·gaussdb
Gauss松鼠会6 分钟前
GaussDB权限管理:从RBAC到精细化控制的企业级安全实践
大数据·数据库·安全·database·gaussdb
时序数据说14 分钟前
时序数据库IoTDB用户自定义函数(UDF)使用指南
大数据·数据库·物联网·开源·时序数据库·iotdb
Java初学者小白1 小时前
秋招Day15 - Redis - 缓存设计
java·数据库·redis·缓存
绅士玖2 小时前
前端数据存储总结:Cookie、localStorage、sessionStorage与IndexedDB的使用与区别
前端·javascript·数据库
倔强的石头1062 小时前
飞算JavaAI:重构软件开发范式的智能引擎
java·数据库·重构
Q_970956393 小时前
java+vue+SpringBoo足球社区管理系统(程序+数据库+报告+部署教程+答辩指导)
java·开发语言·数据库
行星0083 小时前
PostgreSQL大表创建分区实战
数据库·postgresql
isNotNullX3 小时前
什么是数据分析?常见方法全解析
大数据·数据库·数据仓库·人工智能·数据分析
唐可盐4 小时前
第六章 SQL编程系列-Gbase8a从入门到进阶
数据库·sql·gbase8a