webpy分页类 + 上传类
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分页类 + 上传类的更多相关文章
- php-数据库-分页类-上传类
config.ini.php <?php header("content-type:text/html;charset=utf-8"); //项目的根目录 define(&q ...
- php四个常用类封装 :MySQL类、 分页类、缩略图类、上传类;;分页例子;
Mysql类 <?php /** * Mysql类 */ class Mysql{ private static $link = null;//数据库连接 /** * 私有的构造方法 */ pr ...
- 自定义MVC框架之工具类-文件上传类
截止目前已经改造了3个类: ubuntu:通过封装验证码类库一步步安装php的gd扩展 自定义MVC框架之工具类-分页类的封装 该文件上传类功能如下: 1,允许定制上传的文件类型,文件mime信息,文 ...
- THINKPHP源码学习--------文件上传类
TP图片上传类的理解 在做自己项目上传图片的时候一直都有用到TP的上传图片类,所以要进入源码探索一下. 文件目录:./THinkPHP/Library/Think/Upload.class.php n ...
- PHP图片上传类
前言 在php开发中,必不可少要用到文件上传,整理封装了一个图片上传的类也很有必要. 图片上传的流程图 一.控制器调用 public function upload_file() { if (IS_P ...
- Ueditor 1.4.3.1 使用 ThinkPHP 3.2.3 的上传类进行图片上传
在 ThinkPHP 3.2.3 中集成百度编辑器最新版 Ueditor 1.4.3.1,同时将编辑器自带的上传类替换成 ThinkPHP 3.2.3 中的上传类. ① 下载编辑器(下载地址:http ...
- ASP.NET 文件上传类 简单好用
调用: UploadFile uf = new UploadFile(); /*可选参数*/ uf.SetIsUseOldFileName(true);//是否使用原始文件名作为新文件的文件名(默认: ...
- PHP多文件上传类
<?php class Upload{ var $saveName;// 保存名 var $savePath;// 保存路径 var $fileFormat = array('gif','jpg ...
- PHP 文件上传类
FileUpload.; $]; $_newname = date(,). : To ...
随机推荐
- PR和VV的分类与区别
Adobe Premiere是一款常用的视频编辑软件,由Adobe公司推出.现在常用的有CS4.CS5.CS6.CC.CC 2014及CC 2015版本.是一款编辑画面质量比较好的软件,有较好的兼容性 ...
- hdu 1052 (greedy algorithm) 分类: hdoj 2015-06-18 16:49 35人阅读 评论(0) 收藏
thanks to http://acm.hdu.edu.cn/discuss/problem/post/reply.php?action=support&postid=19638&m ...
- XCode6.0的iOS免证书真机测试方法(MAC及黑苹果均有效)
目前在XCode上开发的iOS程序只能在模拟器Simulator中运行,如果要放到真机上测试,需要苹果官方认证的开发者账号,购买开发者证书iDP,99美金一年啊!!! 作为刚开始学习iOS编程的菜鸟, ...
- js事件捕获,事件冒泡,事件委托以及DOM事件流
一:DOM事件流: 事件流是从页面接收事件的顺序,DOM2级事件规定事件流包括三个阶段: ①事件捕获阶段:用意在于事件达到目标之前捕获它,在事件捕获阶段事件流模型:document→html→body ...
- 2016 - 1 - 23 json解析
一: json 1. 什么是json 1.1 json是一种轻量级的数据格式,一般用于数据交互. 1.2 服务器返回给客户端的数据,一般都是JSON或者XML格式(文件下载除外). 2. JS ...
- mouseover 移入某个元素后停留一段时间再执行函授,我用于解决轮播图下面计数用的元素快速移入后会出BUG的问题。
var stop; $(this).bind("mouseover",function(){ stop= setTimeout(function(){ },200); }).bin ...
- IOS UIImagePickerController 保存图片到 相册
// 异步下载图片 dispatch_queue_t queue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0); disp ...
- springmvc学习笔记--Interceptor机制和实践
前言: Spring的AOP理念, 以及j2ee中责任链(过滤器链)的设计模式, 确实深入人心, 处处可以看到它的身影. 这次借项目空闲, 来总结一下SpringMVC的Interceptor机制, ...
- java中的final关键词
参考资料: http://www.cnblogs.com/dolphin0520/p/3736238.html final是个修饰词,可以修饰类.方法.变量. 1. 修饰类 修饰类,就表示这个类不能被 ...
- iframe的使用
function Report() { var info = document.getElementById("iframeReport"); ...