web2py的SQLFORM.grid中展现图片与field的represent详解

web2py的SQLFORM.grid组建是表格化数据,针对时upload的字段,提供的文件的下载地址,例如:

 针对一些图片文件,我们想直接在SQLFORM.grid的表格里中看到图片:

一、field的represent

 在构建表的字段时,Filed有个represent的属性,它用且仅用于 web2py的自带Table、Form、grid等自带组件在前端展示时的 “替代展现,其他场景下访问读取数据表,还是得到的数据原始内容:

db.define_table('person',

Field('name','string',label='姓名',writable=False),

Field('photo','upload',label='影像',

uploadfolder=os.path.join(request.folder,'photo'),uploadseparate=True,autodelete=True))

#我们定义的represent方法

db.person.photo.represent = lambda photo,row: grid_image_show(photo,'80px')

二、grid_image_show操作方法

def grid_image_show(file_name,height):
    return XML('<img height="'+height+'" src="/default/download/'+file_name+'"/>')

这里我们构建URL用到了web2py自带default.py的download方法:

@cache.action()
def download():
    return response.download(request, db)

最后使用XML函数,直接在grid的单元格中输出 html源代码,

最终效果,我们看到represent的字段,展示出来的是图片:

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值