繁体   English   中英

Flask-Admin | 如何修复到图像的路线

[英]Flask-Admin | How to fix route to the image

根据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中进行操作。

我找到了一种解决方案,可以在没有ImageUploadField的情况下将图像传递到Flask-admin中的编辑视图。 解决方案很简单,我所需要的只是从数据库传递一个图像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 %}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM