gofiber: 模板: 分页功能模块

一,代码

1,模块

package pageimport "fmt"type Page struct {//定义分页的structTotal int `json:"total"`TotalPage int `json:"totalpage"`CurrentPage int `json:"currentpage"`PrevPage int `json:"prevpage"`NextPage int `json:"nextpage"`ListPage []int `json:"listpage"`
}func GetPageInfo(total,size,currentPage int) *Page {//创建对象pageOne := &Page{}//items总数pageOne.Total = total//当前页pageOne.CurrentPage = currentPage//总页数if size == 0 {pageOne.TotalPage = 0}totalPage := total / sizeif total%size > 0 {totalPage++}pageOne.TotalPage = totalPagefmt.Println("TotalPage:",totalPage)//得到要列出的页码,begin:=1end:=1if totalPage<=10 {begin = 1end = totalPage} else {if currentPage-5<=0 {begin = 1end = 10} else {if totalPage-currentPage<=5 {end = totalPagebegin = totalPage-9} else {begin = currentPage-5end = begin+9}}}fmt.Println("end:",end)//添加到切片listOne := []int{}for i := begin; i <= end; i++ {fmt.Println(i)listOne = append(listOne,i)}fmt.Println(listOne)pageOne.ListPage = listOne//得到之前一页和之后一页next:=currentPage+1if next > totalPage {next = totalPage}prev:=currentPage-1if prev < 1 {prev = 1}pageOne.PrevPage = prevpageOne.NextPage = nextreturn pageOne
}

2,控制器

package controllerimport ("fmt""github.com/gofiber/fiber/v2""industry/service""strconv"
)type TestController struct{}func NewTestController() *TestController {return &TestController{}
}func (dc *TestController) Test(c *fiber.Ctx) error {p := c.Query("p", "1")bid := 2cid := 0size:=20page, _ := strconv.Atoi(p)pageOne := service.GetPageInfo(bid,cid,size,page)myMap:=fiber.Map{}myMap["Title"] = "书店新上图书列表"myMap["page"] = pageOnemyMap["base"] = "/test/test?"fmt.Println(myMap)return c.Render("test/test", myMap)
}

二,模板:

定义模板

<div class="page" style="margin-top: 30px;">{{$page := .page}}{{$base := .base}}<ul class="pagination"><li><span class="rows">共 {{.page.Total}} 条记录</span></li>{{if ne 1 $page.CurrentPage}}<li><a class="next" href="{{$base}}&p={{.page.PrevPage}}"> << </a></li>{{end}}{{range $key, $value := .page.ListPage}}{{if eq $value $page.CurrentPage}}<li class="active"><span class="current">{{$value}}</span></li>{{else}}<li><a class="num" href="{{$base}}&p={{$value}}">{{$value}}</a></li>{{end}}{{end}}{{if ne $page.TotalPage $page.CurrentPage}}<li><a class="next" href="{{$base}}&p={{.page.NextPage}}">>></a></li>{{end}}<li><a class="end" href="{{$base}}&p={{.page.TotalPage}}">...{{.page.TotalPage}}</a></li></ul>
</div>

调用

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /><meta name="renderer" content="webkit" /><title>新闻资讯 - 官方网站!</title><link rel="shortcut icon" type="image/x-icon" href="/favicon.png" media="screen" /><link type="text/css" rel="stylesheet" href="/Font/css/font-awesome.min.css" /><link type="text/css" rel="stylesheet" href="/Animate/animate.css" /></head>
<body>{{template "partials/page" .}}</body>
</html>

三,测试效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/839736.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

gorm: 安装使用

一,官方网站: https://gorm.io/ 如图: 二,安装: 从命令行安装gorm $ go get -u gorm.io/gorm go: downloading gorm.io/gorm v1.25.12 go: downloading github.com/jinzhu/now v1.1.5 go: downloading golang.org/x/text v0.19.0 go: downloading golang.org/x/text v0.20.0…

app小程序web安全—sign签名绕过

零、前言 在web界面登陆时,小程序和app传输数据时经常会碰到签名,会对请求的参数进行签名,如果自己修改了数据包就会校验失败非常麻烦。 本文编写的契机就是因为碰到了一个JeecgBoot的小程序, 想请求信息泄露的url但是显示“Sign签名校验失败”,让我非常无语,到手的漏洞飞…

Mobaxterm

软件来源: https://webra.top/app/249.html 安装包:推荐的B站视频: https://www.bilibili.com/video/BV1ze41157SP/?spm_id_from=333.337.search-card.all.click&vd_source=a171527166b8663ca801f58ca719a9b8

如何保留 wpftmp.csproj 文件用于调试

在构建 WPF 的过程,会生成 wpftmp.csproj 中间项目文件,用这个文件来辅助 XAML 构建过程。中间项目文件会在构建完成之后被删除,本文告诉大家如何保留 wpftmp.csproj 文件用于调试设置方法是添加 <GenerateTemporaryTargetAssemblyDebuggingInformation>true</Gene…

React Fiber架构的原理和工作模式

React16 => React引入Fiber架构,解决过去更新机制的问题 =》 在长时间的更新过程中,主线程会被阻塞,导致应用无法即时响应用户输入。 核心内容: 【Fiber是什么】【Fiber的底层原理】Fiber是什么? 当编写React组件并使用JSX时,React在底层会将JSX转换为元素的对象结构转…

【shell脚本】精选10款Nginx日志分析脚本

Nginx日志分析是网站运维和性能优化的重要环节。10个常用的Nginx日志分析脚本,脚本涵盖了从基本访问统计到高级性能分析的多个方面。供参考学习。 1、统计访问最多的前10个IP地址 #!/bin/bash LOG_FILE=$1 echo "统计访问最多的10个IP" awk {a[$1]++}END{print &quo…

【后门程序编程】基础1

一、后门概述 1.1 后门的发展历史 1.1.1 功能上发展。1.1.2 隐蔽性上的发展。1.2 后门的分类1.2.1 网页后门 1.2.2 线程插入后门 1.2.3 扩展后门 1.2.4 C/S后门。1.2.5 root kit。二、编写简单的cmdshell程序 2.1 管道通信技术简介 2.2 正向连接后门的编程 2.2.1 双…

LEAD:用于无源通用域自适应的学习分解

LEAD:用于无源通用域自适应的学习分解 通用领域适应(UniDA)的目标是在存在协变量和标签转移的情况下进行知识转移。最近,出现了无源通用域适配(SF UniDA),可以在不访问源数据的情况下实现UniDA,由于数据保护政策,这往往更实用。主要的挑战在于确定协变量移位样本是否属…

无监督域自适应的域不可知相互激励

无监督域自适应的域不可知相互激励 传统的无监督域自适应(UDA)致力于最大限度地减少域之间的分布差异,这忽视了从数据中利用丰富的语义,并难以处理复杂的域转换。一种有前景的技术是利用大规模预训练视觉语言模型的知识进行更有指导的适应。尽管做出了一些努力,但当前的方…

收藏篇:低功耗模组软件的PWM应用实例

本文是把我自己收藏的低功耗模组软件的PWM应用实例分析大家,我是以低功耗4G模组Air724UG为例。本文是把我自己收藏的低功耗模组软件的PWM应用实例分析大家,我是以低功耗4G模组Air724UG为例。 一、简介 1.1 pwm是什么 脉冲宽度调制(PWM),是英文“Pulse Width Modulation”的缩…

4G模组Air724UG软件的GPIO教程 | 技术版!

今天我要讲的技术是4G模组Air724UG软件的GPIO教程,希望看文的你有所收获。今天我要讲的技术是4G模组Air724UG软件的GPIO教程,希望看文的你有所收获。 一、GPIO 概述 GPIO 是通用型输入输出的简称,一个 GPIO 引脚可以用于输入、输出或其他特殊功能。 二、演示功能概述 本文将…

Air724UG软件的SD卡随笔!贴身版

本次要讲的是4G模组的SD卡示例,以Air724UG模组为例子供大家参考。本次要讲的是4G模组的SD卡示例,以Air724UG模组为例子供大家参考。 一、SD 卡概述 SD卡在物联网设备中,经常用于存储较大文件的容器载体。本文介绍如何用 Air724UG开发板,和PC端搭建一个基于SD卡存储文件的功…