Как я могу отображать изображения в шаблоне Flask, адреса которого хранятся в MySQL? Я пытаюсь передать данные из столбца «имя файла» в шаблон, но изображения не отображаются.
Как я могу решить эту проблему? Заранее спасибо!
Код фляги:
@app.route('/')
def index():
# Create cursor
cur = mysql.connection.cursor()
# Get articles
result = cur.execute("SELECT * FROM articles")
articles = cur.fetchall()
if result > 0:
return render_template('home.html', articles=articles)
else:
msg = 'No articles Found'
return render_template('home.html', msg=msg)
# Close connection
cur.close()
return render_template('home.html')
Шаблон:
<div>
<h1 id=projetos>Projetos</h1>
<ul class = "list-group">
{% for article in articles %}
<li class = "list-group-item"><a href = "article/{{article.id}}">{{article.title}}</a></li>
<img src = {{article.filename}}>
{% endfor %}
</ul>
</div>
Вы должны знать, где вы сохранили изображения, а затем используете:
send_from_directory
который можно импортировать из колбы с параметрами
send_from_directory(folder_name, imagefilename)
который может быть обернут в функцию как
@app.route('/file/<filename>')
def get_image(filename):
return send_from_directory(folder_name, filename)
Вы используете его в шаблонах как:
<img href = "{{url_for('get_image', filename='image.jpg')}}">
Если вы хотите, чтобы пакет обрабатывал активы, я рекомендую flask-reuploaded, который является преемником flask-uploads.
Для обслуживания статических ресурсов в рабочей среде это другая история, в зависимости от того, что вы используете для обслуживания своего приложения flask, а также от характера и масштаба вашего приложения.
Будет ли он работать с каталогом изображений, хранящихся в MySQL?