我无法使用web2py在我的一个视图中显示图像。我在这里找到了类似的线程,但大多数都是指缩略图和blob&#39存储的图像。
以下是我所拥有的:
MODEL
db.define_table('foto',
Field('archivo','upload'))
CONTROLLER
def mostrar():
fotos = (db.foto)
return locals()
查看
{{extend 'layout.html'}}
{{for foto in fotos:}}
<img width="123px" src="{{=URL('download', args=fotos.archivo)}}" />
{{pass}}
据我了解,上面的内容将允许我查看在视图中上传的图片,但我得到了断开链接的图片,如下所示:
如果我尝试更改args
代码中的<img
部分,从args=fotos.archivo
到args=foto.archivo
,我会收到<type 'exceptions.AttributeError'> 'Field' object has no attribute 'archivo'
错误。
我很确定我在这里错过了一些重要的概念 - 我认为,如果使用'upload'
作为类型,则将图片保存在文件中系统。但是,我在某处读到download
函数用于处理(文件系统存储文件,而不是blob),并且upload
只要在SQLFORM中使用它就会将任何内容存储到文件系统中。 (与我在上面的代码中使用相同)。
答案 0 :(得分:1)
fotos = (db.foto)
在上面,您只需返回Table
对象。但是,此对象不包含任何记录 - 它只是数据库架构的表示形式。相反,您必须从数据库中明确选择记录:
fotos = db(db.foto).select()
以上是db(db.foto.id > 0).select(db.foto.ALL)
的快捷方式(即,它会选择所有记录和所有字段)。
进行更改后,您还应将args=fotos.archivo
更改回args=foto.archivo
。