python - 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))
}
解决方案
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()