【问题标题】:web2py is not showing the images uploadedweb2py 不显示上传的图像
【发布时间】:2014-05-20 06:12:13
【问题描述】:

我无法让 web2py 在我的一个视图中显示图像。我在这里找到了类似的线程,但其中大多数是指缩略图和“blob”存储的图像。

这是我所拥有的:


型号

db.define_table('foto',
                Field('archivo','upload'))

控制器

def mostrar():
    fotos = (db.foto)
    return locals()

查看

{{extend 'layout.html'}}
{{for foto in fotos:}}
    <img width="123px" src="{{=URL('download', args=fotos.archivo)}}" />
{{pass}}

据我了解,以上内容可以让我看到上传到视图中的图像,但我得到了断开链接的图像,如下所示:

如果我尝试将&lt;img 标记中的args 部分从args=fotos.archivo 更改为args=foto.archivo,我会收到&lt;type 'exceptions.AttributeError'&gt; 'Field' object has no attribute 'archivo' 错误。

我很确定我在这里遗漏了一些重要的概念 - 我认为,如果使用 'upload' 作为类型,您保存文件系统中的图片。但是,我在某处读到 download 函数旨在与它一起使用(文件系统存储文件,而不是 blob),并且 upload 将任何内容存储到文件系统中,只要它在 SQLFORM 中使用(与我相同) '在上面的代码中使用)。

【问题讨论】:

    标签: image web2py


    【解决方案1】:
    fotos = (db.foto)
    

    在上面,您只需返回 Table 对象。但是,该对象不包含任何记录——它只是数据库模式的一种表示。相反,您必须从数据库中显式选择记录:

    fotos = db(db.foto).select()
    

    以上是db(db.foto.id &gt; 0).select(db.foto.ALL) 的快捷方式(即选择所有记录和所有字段)。

    一旦你做出改变,你也应该把args=fotos.archivo改回args=foto.archivo

    【讨论】:

    • 你太棒了 - 指出了确切的问题。感谢您对 web2py 的帮助;到目前为止,您已经回答了我的几个问题,而且您总是正确的。
    猜你喜欢
    • 2012-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 2018-10-10
    • 2015-09-13
    • 2016-05-04
    相关资源
    最近更新 更多