webpy没有分页类。按照php的思路。自己编了一个。数据库用的是sqlite。  

class Page(object):
'''分页类'''
def __init__(self,page_size,data_count,page_current):
import math
self.size = page_size
self.data_count = data_count
self.page_current = int(page_current)
self.page_max = int(math.ceil(self.data_count * 0.1 * 10 / self.size )) self.page_current = 1 if self.page_current < 1 else self.page_current
self.page_current = self.page_max if self.page_current > self.page_max else self.page_current self.offset = ( self.page_current - 1) * self.size
def set_url(self,url):
if "?" in url:
f_url = url.split("page")[0]
if "&" in url:
f_url += "&"
else:
f_url = url + "?"
self.url = f_url
def get_html(self):
self.page_pre = self.page_current - 1
self.page_next = self.page_current + 1
if self.page_max in (0,1) :
html = u'''
<span>首页</span>
<span>上一页</span>
<span>下一页</span>
<span>尾页</span>
'''
elif self.page_current <= 1:
html = u'''
<span>首页</span>
<span>上一页</span>
<span><a href="{self.url}page={self.page_next}">下一页</a></span>
<span><a href="{self.url}page={self.page_max}">尾页</a></span>
'''.format(self=self)
elif self.page_current >= self.page_max:
html = u'''
<span><a href="{self.url}page=1">首页</a></span>
<span><a href="{self.url}page={self.page_pre}">上一页</a></span>
<span>下一页</span>
<span>尾页</span>
'''.format(self=self)
else:
html = u'''
<span><a href="{self.url}page=1">首页</a></span>
<span><a href="{self.url}page={self.page_pre}">上一页</a></span>
<span><a href="{self.url}page={self.page_next}">下一页</a></span>
<span><a href="{self.url}page={self.page_max}">尾页</a></span>
'''.format(self=self)
banner = u'''第<span id="spanPageNum">{self.page_current}</span>页/共<span id="spanTotalPage">{self.page_max}</span>页'''.format(self=self)
html = "<div>%s</div>"%(html + banner) if self.data_count > self.size:
return html
else:
return ""

调用:

        page_current = i.get("page",1)

     page_size = 5  #每页显示几条数据
data_count = (db.select("messages",what="count(content) c")[0]["c"]) #总数据量 page = conf.Page(page_size,data_count,page_current)
page.set_url(web.ctx.fullpath)
page_html = page.get_html() data = db.select("messages",order="datetime desc",limit=page.size,offset=page.offset)

上传文件类:

class Upload(object):
u'''文件上传类,接受excel,csv文件''' def __init__(self,upfile):
import os
self.file = upfile
self.file_ext = upfile.filename.split(".")[-1]
self.file_name = upfile.filename.split(".")[-2]
#self.file_path = upfile.filename.replace('\\','/')
def save(self):
'''将文件存入服务器文件夹'''
import os,time
if not self.file_ext in ("xlsx","xls"):
return u"文件类型错误"
try:
os.mkdir(r"static/upload/file_dir/")
save_path = r"static/upload/file_dir/"
except:
save_path = r"static/upload/file_dir/" now = str(time.time()).split(".")[0] try:
with open(save_path+"%s"%(now+"."+self.file_ext),"wb") as f:
f.write(self.file.file.read())
self.filepath = save_path+"%s"%(now+"."+self.file_ext)
except:
pass def get_data(self):
'''返回数据'''
import os
# try:
# import openpyxl
# wb = openpyxl.load_workbook(self.filepath)
# ws = wb.get_sheet_by_name(wb.get_sheet_names()[0])
# data = [[j.value for j in i] for i in ws.rows[2:]]
# return data
# except:
# return "openpyxl is not exists!"
try:
import xlrd
wb = xlrd.open_workbook(self.filepath)
ws = wb.sheet_by_index(0)
data = [ws.row_values(i) for i in range(ws.nrows)][2:]
return data
except:
return "xlrd is not exists!"
finally:
os.remove(self.filepath)
class Upload(object):
u'''文件上传类,接受excel文件''' def __init__(self,upfile):
import os
self.file = upfile
self.file_ext = upfile.filename.split(".")[-1]
self.file_name = upfile.filename.split(".")[-2]
#self.file_path = upfile.filename.replace('\\','/')
def save(self):
'''将文件存入服务器文件夹'''
import os,time
if not self.file_ext in ("xlsx","xls"):
return u"文件类型错误"
try:
os.mkdir(r"static/upload/file_dir/")
save_path = r"static/upload/file_dir/"
except:
save_path = r"static/upload/file_dir/" now = str(time.time()).split(".")[0] try:
with open(save_path+"%s"%(now+"."+self.file_ext),"wb") as f:
f.write(self.file.file.read())
self.filepath = save_path+"%s"%(now+"."+self.file_ext)
except:
pass def get_data(self):
'''返回数据'''
import os
# try:
# import openpyxl
# wb = openpyxl.load_workbook(self.filepath)
# ws = wb.get_sheet_by_name(wb.get_sheet_names()[0])
# data = [[j.value for j in i] for i in ws.rows[2:]]
# return data
# except:
# return "openpyxl is not exists!"
try:
import xlrd
wb = xlrd.open_workbook(self.filepath)
ws = wb.sheet_by_index(0)
data = [ws.row_values(i) for i in range(ws.nrows)][2:]
return data
except:
return "xlrd is not exists!"
finally:
os.remove(self.filepath)

webpy分页类 + 上传类的更多相关文章

  1. php-数据库-分页类-上传类

    config.ini.php <?php header("content-type:text/html;charset=utf-8"); //项目的根目录 define(&q ...

  2. php四个常用类封装 :MySQL类、 分页类、缩略图类、上传类;;分页例子;

    Mysql类 <?php /** * Mysql类 */ class Mysql{ private static $link = null;//数据库连接 /** * 私有的构造方法 */ pr ...

  3. 自定义MVC框架之工具类-文件上传类

    截止目前已经改造了3个类: ubuntu:通过封装验证码类库一步步安装php的gd扩展 自定义MVC框架之工具类-分页类的封装 该文件上传类功能如下: 1,允许定制上传的文件类型,文件mime信息,文 ...

  4. THINKPHP源码学习--------文件上传类

    TP图片上传类的理解 在做自己项目上传图片的时候一直都有用到TP的上传图片类,所以要进入源码探索一下. 文件目录:./THinkPHP/Library/Think/Upload.class.php n ...

  5. PHP图片上传类

    前言 在php开发中,必不可少要用到文件上传,整理封装了一个图片上传的类也很有必要. 图片上传的流程图 一.控制器调用 public function upload_file() { if (IS_P ...

  6. Ueditor 1.4.3.1 使用 ThinkPHP 3.2.3 的上传类进行图片上传

    在 ThinkPHP 3.2.3 中集成百度编辑器最新版 Ueditor 1.4.3.1,同时将编辑器自带的上传类替换成 ThinkPHP 3.2.3 中的上传类. ① 下载编辑器(下载地址:http ...

  7. ASP.NET 文件上传类 简单好用

    调用: UploadFile uf = new UploadFile(); /*可选参数*/ uf.SetIsUseOldFileName(true);//是否使用原始文件名作为新文件的文件名(默认: ...

  8. PHP多文件上传类

    <?php class Upload{ var $saveName;// 保存名 var $savePath;// 保存路径 var $fileFormat = array('gif','jpg ...

  9. PHP 文件上传类

    FileUpload.;                $];                $_newname = date(,). :                             To ...

随机推荐

  1. Java:Map

    接口Map<K,V>,K – 映射所维护的键的类型:V – 映射值的类型. public interface Map<K,V>,将键映射到值的对象.一个映射不能包括重复的键:每 ...

  2. AspectJ的基本使用

    参考: https://my.oschina.net/itblog/blog/208067

  3. Linux下SVN命令

    一下内容转载于:http://blog.chinaunix.net/space.php?uid=22976768&do=blog&id=1640924.这个总结的很好~ windows ...

  4. MagicalRecord的使用(第三方库实现的数据库)

    MagicalRecord:http://cocoadocs.org/docsets/MagicalRecord/2.1/ 安装: 1.新建一个工程,注意不要勾选 Core Data. 2.利用Coc ...

  5. 向mysql workbench中导入.sql文件

    mysql workbench用的不多,前段时间装了一下,然后用了一下,感觉操作比dbdesigner4要更人性化一点.其中二个方面做了改进,让我觉得很爽. 第一,就是端口可以修改了,以前就是定死33 ...

  6. jQuery--index() window.onhashchange

    index(): 1. 如果没有参数传给该函数,那么就返回一个整数,为其相对于其兄弟节点的位置. 2. 如果在一个元素集合上调用该函数,并且传入的参数为一个DOM元素或jQuery对象,那么返回一个整 ...

  7. (spring-第18回【AOP基础篇】) 创建切面

    一.   在创建增强一节中,增强被织入到目标类的所有方法中,假设我们希望有选择地织入到目标类某些特定的方法中,就需要使用切点进行目标连接点的定位. 二.   spring通过org.springfra ...

  8. 如何垂直居中一个<img>?

    <!doctype html><html> <head> <meta charset="UTF-8"> <meta name= ...

  9. kinnect相关

    1. kinnect的现状. http://tech.qq.com/a/20150909/046760.htm 2. kinnect的相关工作 http://baike.baidu.com/link? ...

  10. cdh5.7权限测试示例

    转载请注明出处:http://www.cnblogs.com/xiaodf/ 本文旨在展示CDH基于Kerberos身份认证和基于Sentry的权限控制功能的测试示例. 1. 准备测试数据 cat / ...