返回

实现多参数分页查询列表!实战攻略!

后端

一、前言

大家好,我是bug菌

持续创作,加速成长!

这是我参与「掘金日新计划 · 6 月更文挑战」的第17天点击查看活动详情

接下来的这几期,bug菌想跟大家分享一下自己昨天刚接到一个临时的需求,热乎着

需求很简单,需要实现一个多参数的分页查询列表

这个需求看似简单,但是涉及到的知识点却不少

今天我就跟大家分享一下实现这个需求的实战经验

希望对大家有所帮助

今天的内容主要分为以下几个部分

  • 参数接收
  • 数据查询
  • 分页处理
  • 页面展示
  • 总结

二、参数接收

首先,我们先来看一下参数接收

本次的需求中,需要支持多参数查询,因此我们首先需要将这些参数接收过来

这里我主要用到的是Request对象来接收参数

Request对象是一个内置的对象,它包含了请求的所有信息

我们可以通过Request对象的args属性来获取参数

from flask import request

# 获取参数
args = request.args

# 获取参数值
name = args.get('name')
age = args.get('age')

# 判断参数值是否存在
if name is None or age is None:
    return '参数不完整'

这样我们就可以获取到前端传递过来的参数了

需要注意的是,如果参数值不存在,那么我们需要返回一个错误信息

否则,程序会报错

三、数据查询

接下来,我们来看一下数据查询

我们需要根据前端传递过来的参数来查询数据

这里我主要用到的是SQLAlchemy来查询数据

SQLAlchemy是一个非常强大的ORM框架,它可以让我们很方便地进行数据查询

from sqlalchemy import and_

# 创建查询对象
query = session.query(User)

# 添加查询条件
query = query.filter(and_(User.name == name, User.age == age))

# 执行查询
users = query.all()

这样我们就查询到了满足条件的数据

需要注意的是,这里我用到了and_函数来组合查询条件

and_函数可以让我们将多个查询条件组合成一个查询条件

这样可以提高查询的效率

四、分页处理

接下来,我们来看一下分页处理

分页处理是指将数据分成多个页面,然后逐页显示

这里我主要用到的是Flask-SQLAlchemy的paginate_results方法来进行分页处理

from flask_sqlalchemy import Pagination

# 创建分页对象
pagination = query.paginate(page=1, per_page=10)

# 获取当前页的数据
users = pagination.items

# 获取总页数
total_pages = pagination.pages

# 获取当前页数
current_page = pagination.page

# 获取每页的数据量
per_page = pagination.per_page

这样我们就完成了分页处理

需要注意的是,这里我将page参数设置为1,per_page参数设置为10

page参数表示当前页数,per_page参数表示每页的数据量

您可以根据自己的需要来设置这两个参数

五、页面展示

接下来,我们来看一下页面展示

我们需要将查询到的数据展示到页面上

这里我主要用到的是Jinja2来渲染页面

{% for user in users %}
    <tr>
        <td>{{ user.id }}</td>
        <td>{{ user.name }}</td>
        <td>{{ user.age }}</td>
    </tr>
{% endfor %}

这样我们就将查询到的数据展示到了页面上

需要注意的是,这里我使用了一个for循环来遍历users列表

users列表中包含了所有查询到的数据

六、总结

这就是实现多参数分页查询列表的实战经验

希望对大家有所帮助

在实际开发中,我们可能会遇到各种各样的问题

我们需要根据具体的情况来解决这些问题

但是,只要我们掌握了基本的方法,那么我们就可以轻松应对这些问题了

好了,今天的分享就到这里了

我们下期再见

谢谢大家