Flask-admin显示图像,其列的路径为

时间:2018-07-31 08:23:25

标签: python flask flask-admin

我的数据库设置如下:

  MediaPath    DateCreated    Message   Type
/home/1/1.jpg   21.09.2017              jpeg
/home/2/2.jpg   ....          ....      ....

如何设置Flask代码以从MediaPath列预览图像,而不将其上传到/ static /文件夹? 这是通常的flask-admin代码模板:

class ImageView(sqla.ModelView):
def _list_thumbnail(view, context, model, name):
    if not model.path:
        return ''

    return Markup('<img src="%s">' % url_for('static',
                                             filename=form.thumbgen_filename(model.path)))

column_formatters = {
    'path': _list_thumbnail
}


form_extra_fields = {
    'path': form.ImageUploadField('Image',
                                  base_path=file_path,
                                  thumbnail_size=(100, 100, True))
}

1 个答案:

答案 0 :(得分:0)

MeidaPath列中文件的路径是否是其绝对路径?

确保由form.thumbgen_filename(model.path)返回的路径是文件的绝对路径,您可以执行以下操作:

代替:

return Markup('<img src="%s">' % url_for('static', filename=form.thumbgen_filename(model.path)))

使用:

return Markup('<img src="%s">' % form.thumbgen_filename(model.path))

**假设方法thumbgen_filename()返回图像缩略图的绝对路径(您尚未发布该方法的代码,所以我假设这是该方法返回的内容)**

使用url_for('static', filename='some-path')时,它会生成URL,该URL包括静态路径和静态文件夹中的文件,具体取决于您为url_for的filename参数提供的值。如果要使用其绝对路径加载文件,只需提供其绝对路径而不使用url_for()