根据Flask中的图像路径,我有一个问题。 我有一个数据库模型图像,其中包含有关图像的所有必要信息,包括路径 - '/ animals/sometype/image.jpg'。
我正在使用Flask-admin模块,问题是编辑模式下图像的路径错误。 这是一个代码:
class ImageView(ModelView):
edit_template = 'image_edit.html'
def _list_thumbnail(view, context, model, name):
if not model.path:
return ''
return Markup('<img src="%s">' % url_for('static', filename=('images' + model.path)))
column_formatters = {
'path': _list_thumbnail
}
form_extra_fields = {
'path': form.ImageUploadField('Image', base_path='static/images', url_relative_path='images/')
}
对于列格式化程序路径是否正确,但是对于额外的字段是错误的,导致404错误:http://127.0.0.1:5000/static//animals/birds/the_bird-wallpaper-1366x768.jpg
我该如何解决这个问题? 另外,我正在考虑将图像传递给自定义编辑模板,但我不明白,如何在Flask-Admin中执行此操作。
答案 0 :(得分:0)
我找到了一个解决方案,可以在没有ImageUploadField的Flask-admin中将图像传递到编辑视图。解决方案很简单,我只需要从DB传递图像ID并在Jinja模板中使用它。
class ImageView(ModelView):
edit_template = 'image_edit.html'
@expose('/edit/', methods=['GET', 'POST'])
def edit_view(self):
id = request.args.get('id')
self._template_args['image'] = db.session.query(Image.path).filter(Image.id == id).first()[0]
return super(ImageView, self).edit_view()
和HTML模板:
{% extends "admin/model/edit.html" %}
{% block body %}
<img src=/static/images/{{ image }}/>
{{ super() }}
{% endblock %}