[英]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.