前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Flask与Vue分页功能实现

Flask与Vue分页功能实现

原创
作者头像
晓松
发布于 2024-12-26 08:22:19
发布于 2024-12-26 08:22:19
12800
代码可运行
举报
运行总次数:0
代码可运行

在本篇文章中,我们将实现一个简单的分页功能,后端使用 Flask 提供数据,前端使用 Vue.js 显示数据,并且通过 Element UI 进行分页组件的交互。具体实现包括 Flask 视图函数的分页逻辑、Vue 前端分页组件的实现和前后端数据交互。

1. 后端:Flask分页实现

首先,确保你的 Flask 环境已经设置好,并安装了相关依赖:

代码语言:bash
AI代码解释
复制
pip install flask flask-sqlalchemy
视图函数 operation_log_view

Flask 中使用 paginate 方法来实现分页查询。我们将在视图函数中处理分页的逻辑,接受来自前端的分页参数,然后返回分页数据。

代码语言:python
代码运行次数:0
运行
AI代码解释
复制
from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///logs.db'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)

class OperationLog(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    user_id = db.Column(db.Integer, nullable=False)
    operation_time = db.Column(db.DateTime, nullable=False)
    operation_type = db.Column(db.String(50), nullable=False)

@app.route('/operation_log_view', methods=['POST'])
def operation_log_view():
    """操作日志分页接口"""
    page_number = request.json.get('page_number')
    page_count = request.json.get('page_count')

    if not all([page_number, page_count]):
        return jsonify({'status': 'error', 'data': '参数不能为空'})

    page_number = int(page_number)
    page_size = int(page_count)

    # 查询操作日志并进行分页
    operation_logs_pagination = (
        OperationLog.query.order_by(OperationLog.operation_time.desc())
        .paginate(page_number, page_size, False)
    )
    # 获取分页数据
    operation_logs = operation_logs_pagination.items
    # 获取分页信息
    total_pages = operation_logs_pagination.pages
    # 获取当前页码
    current_page = operation_logs_pagination.page

    # 返回操作日志列表
    message = [
        {
            'operation_time': log.operation_time,
            'operation_type': log.operation_type,
        } for log in operation_logs
    ]

    return jsonify({'status': 'ok', 'data': message, 'total_pages': total_pages, 'current_page': current_page})

if __name__ == '__main__':
    app.run(debug=True)

2. 前端:Vue + Element UI分页实现

在前端,我们使用 Vue.js 和 Element UI 来创建分页组件,并与后端进行交互,获取分页数据。

首先,确保你的项目中已经安装了 Vue 和 Element UI。如果没有安装,可以通过以下命令安装:

代码语言:bash
AI代码解释
复制
npm install element-ui axios
Vue 组件代码

Vue 组件中,handleCurrentChange 方法会在用户切换页码时触发,发送请求给后端,获取对应的分页数据。

代码语言:html
AI代码解释
复制
<template>
  <div>
    <!-- 操作日志表格 -->
    <el-table :data="operationRecord">
      <el-table-column prop="operation_time" label="操作时间" width="180">
      </el-table-column>
      <el-table-column prop="operation_type" label="操作类型" width="120">
      </el-table-column>
      <!-- 你可以根据需要继续添加其他列 -->
    </el-table>

    <!-- 分页组件 -->
    <div class="pagination">
      <el-pagination
        layout="prev, pager, next"
        :current-page="currentPage"
        :page-count="totalPages"
        :page-size="pageCount"
        @current-change="handleCurrentChange"
      >
      </el-pagination>
    </div>
  </div>
</template>

<script>
import axios from 'axios';

export default {
  data() {    
    return {
      operationRecord: [],  // 存储操作日志数据
      currentPage: 1,  // 当前页码
      pageCount: 15,   // 每页显示的记录数
      totalPages: 1,   // 总页数
    };
  },
  methods: {
    // 页码变化时触发,重新请求数据
    handleCurrentChange(currentPage) {
      this.currentPage = currentPage;
      this.getOperationRecord();
    },

    // 获取操作日志数据
    getOperationRecord() {
      const params = {
        page_number: this.currentPage,
        page_count: this.pageCount,
      };

      axios.post('/operation_log_view', params)
        .then((response) => {
          const { data } = response;
          if (data.status === 'ok') {
            this.operationRecord = data.data;  // 更新操作记录数据
            this.totalPages = data.total_pages;  // 更新总页数
          }
        })
        .catch((error) => {
          console.error('获取数据失败', error);
        });
    },
  },
  created() {
    // 组件创建时自动请求第一页数据
    this.getOperationRecord();
  },
};
</script>

<style scoped>
.pagination {
  margin-top: 20px;
  text-align: center;
}
</style>

3. 路由配置

在 Flask 中,我们通过路由将视图函数与 URL 绑定。operation_log_view 视图函数已经通过 @app.route('/operation_log_view', methods=['POST']) 绑定到了 /operation_log_view 路径。前端通过 axios.post 向该路径发送请求。

4. 运行项目

  1. 运行 Flask 后端服务:
代码语言:bash
AI代码解释
复制
python app.py
  1. 启动 Vue 项目:
代码语言:bash
AI代码解释
复制
npm run serve
  1. 访问 Vue 项目并进行分页操作,你应该能够看到分页组件,并能够正确显示操作日志数据

5. 总结

  • 后端使用 Flask 和 SQLAlchemy 实现分页,通过 paginate 方法查询数据并返回。
  • 前端使用 Vue.js 和 Element UI 实现分页组件,配合 axios 发送请求和接收分页数据。
  • 当用户切换页码时,Vue 会自动触发请求,更新数据并显示分页。

通过这种方式,我们实现了一个简单的分页功能,能够高效地从后端获取数据并在前端进行分页显示。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
暂无评论
推荐阅读
Python第三方库提速安装
Linux下,修改 ~/.pip/pip.conf (没有就创建一个文件夹及文件。文件夹要加“.”,表示是隐藏文件夹)
北山啦
2022/11/27
4260
Python中的第三方库管理与虚拟环境#学习猿地
> pip就是python的包管理工具,解决了包直接的依赖关系。可以方便的管理第三方库(包).
学习猿地
2020/03/18
5730
Pip安装第三方库网速慢(解决方案)
对于Python开发用户来讲,PIP安装软件包是家常便饭。但国外的源下载速度实在太慢,容易下载超时。所以把PIP安装源替换成国内镜像,可以大幅度的提升下载速度,再也不用担心下载慢了。
忆想不到的晖
2020/11/06
1.6K0
Python安装第三方包(模块/工具)出
这种情况是因为python在安装第三方库的时候会出现下载问题,因为python默认的国外的资源,被墙了。你们懂的,有时候会出现没有网速,网速很慢,
py3study
2020/01/16
5930
Python安装第三方包(模块/工具)出
使用pip命令安装python第三方库有效方法合集
打开命令提示符【win + r】,输入cmd,在命令提示窗口输入pip install 库名, 再点击回车键【Enter】,就可以安装。
程序员洲洲
2024/06/07
1.4K0
使用pip命令安装python第三方库有效方法合集
pycharm中安装第三方库在库的搜索区提示(nohing to show)的解决办法
pycharm自带了包管理的功能,对于很多学习python的新手来说能从pycharm直接搜寻需要的第三方库是件很舒服的事情。
用户7787521
2020/09/25
1.4K0
pycharm无法安装第三方模块_如何在pycharm中安装第三方库
使用pytharm安装python的第三方库很方便,但常常也会报错,下面归纳一些常见的问题。
全栈程序员站长
2022/09/26
1K0
python第三方库的安装方法有哪些_如何安装python的第三方库
在pyhton的学习中,相信大家通常都会碰到第三方库的安装问题,这个问题对于很多初学者而言头疼不已。这里我做一些简单的总结,如何正确高效地安装第三方库,少走弯路(毕竟都是我亲自踩过的坑,所以特地来总结一下,方便以后回顾和总结)!
全栈程序员站长
2022/09/27
2.8K0
python第三方库的安装方法有哪些_如何安装python的第三方库
Python自动安装第三方库的小技巧,让你的代码拿来就用
有刚接触python的粉丝同学在运行此前《Python爬虫 | 手把手教你扒一扒贝壳网成交房源数据》的完整代码遇到以下问题,然后...
可以叫我才哥
2021/08/05
1K0
让你的Pycharm和电脑 pip下载速度飞起来!
有很多朋友刚刚学Python的时候,会来问为什么pip下载东西这么慢啊?pycharm里面下载库也是非常的慢。这其实是个常识性的问题,我们下载的慢是因为Python使用pip方法安装第三方包时,需要从 https://pypi.org/ 资源库中下载。这个网站是国外的服务器,访问自然就很慢,但是国内有很多的镜像站,所谓镜像站就是内容一样,只不过服务器在国内,访问速度自然而然就很快了。下面给大家普及一下如何修改pip的下载源以及pycharm的下载源。
Python进击者
2020/05/08
4.6K0
让你的Pycharm和电脑 pip下载速度飞起来!
python第三方库的安装pip的使用与换源
python和其他语言一样,也有大量的第三方库,在安装python时默认都会安装pip,安装了pip后,windows在cmd.exe下可以运行pip,linux 在命令行运行pip
风之随想
2020/07/25
2.1K0
软件测试|教你轻松解决pip安装下载超时问题
pip是我们最常用的Python第三方库安装工具,不管是什么库,我们只需要一条pip install命令就能安装,但是现在经常出现一些安装超时的问题,这是为什么呢?
霍格沃兹测试开发Muller老师
2023/02/12
1.4K0
pycharm安装第三方库失败_pycharm怎么安装python库
https://pypi.mirrors.ustc.edu.cn/simple/
全栈程序员站长
2022/09/27
9110
pycharm安装第三方库失败_pycharm怎么安装python库
Python之pip使用详解|附第三方库安装总结
pip是python的第三方库管理器,可以根据所开发项目的需要,使用pip相关命令安装不同库。
吾非同
2020/10/13
4.6K0
修改pip默认安装源,修改pycharm默认安装源,瞬间安装就快了几十倍!!!
这几天菜鸟小白在写公众号的时候,每次使用pip安装python库都会出现安装超时的情况。我实在是受不了了,所以整理了这篇修改pip默认安装源的三种方式。
菜鸟小白的学习分享
2020/07/14
13.1K0
Anaconda环境下第三方库的安装
在这个数字化飞速发展的时代,Python作为一种强大的编程语言,已经成为众多开发者和数据科学家的首选工具。Python的强大不仅源于其简洁的语法和强大的功能,更在于其庞大的生态系统——包括标准库和丰富的第三方库。正如一部新手机,自带的浏览器让我们能够浏览互联网,而那些可以自由安装的App则赋予了手机更多的个性化功能和扩展能力。Python亦是如此,其标准库为我们提供了基础功能,而第三方库则像是那些App,让我们的Python项目更加丰富多彩。
老虎也淘气
2024/09/06
2160
Anaconda环境下第三方库的安装
求你了,别再用 pip 那乌龟的速度去安装库了!
学习 Python 的话,仅掌握标准库是远不够的,有很多好用的第三方库我们也需要用到的,比如,由鼎鼎大名的 K 神开发的爬虫必不可少的 requests 库,一般都是必装的库吧。安装第三方库当然还是用 pip 命令安装最方便了。
小F
2020/12/02
4940
求你了,别再用 pip 那乌龟的速度去安装库了!
Python3,选择Python自动安装第三方库,从此跟pip说拜拜!!「建议收藏」
续上一篇《Python3:我低调的只用一行代码,就导入Python所有库!》,小鱼发现,别说,还真有不少懒人~ ~
全栈程序员站长
2022/07/31
7480
Python3,选择Python自动安装第三方库,从此跟pip说拜拜!!「建议收藏」
软件测试|pip安装第三方库报代理错误,怎么解决
pip是我们使用python时最常用的一个工具,我们安装卸载更新Python的第三方库都是依靠这个命令来实现的,即使我们是使用pycharm来管理我们的第三方库,本质上还是通过pip来实现第三方库的安装卸载更新的。因此,对于一些在使用pip时出现的报错,进行一些经验的总结就很有必要了。
霍格沃兹测试开发Muller老师
2023/08/08
8260
软件测试|pip安装第三方库报代理错误,怎么解决
pycharm导入第三方库安装包时出错_pycharm安装不了第三方库
然后将镜像设置为国内的pip镜像后出现Error loading package list:typypi.studutlinux.org
全栈程序员站长
2022/09/27
2.8K0
pycharm导入第三方库安装包时出错_pycharm安装不了第三方库
推荐阅读
相关推荐
Python第三方库提速安装
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档