首页 > 解决方案 > Flask-admin 显示带有列路径的图像

问题描述

我有这样的数据库集:

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

如何设置 Flask 代码以预览 MediaPath 列中的图像而不将它们上传到 /static/ 文件夹?这是通常的烧瓶管理代码模板:

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))
}

标签: pythonflaskflask-admin

解决方案


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_for 的文件名参数的值,生成一个包含静态路径和静态文件夹内的文件的 URL。如果要使用它们的绝对路径加载文件,只需提供它们的绝对路径而不使用url_for()


推荐阅读