Отображение изображения из MySQL в шаблоне Flask

#python #mysql #flask

#python #mysql #flask

Вопрос:

Как я могу отображать изображения в шаблоне Flask, адреса которых хранятся в MySQL? Я пытаюсь передать данные из столбца ‘filename’ в шаблон, но изображения не отображаются.

Как я могу решить эту проблему? Заранее спасибо!

Код Flask:

 @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>
 

Ответ №1:

Вы должны знать, где вы сохранили изображения, которые затем используете:

 send_from_directory
 

который может быть импортирован из flask с параметрами

 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, а также от характера и масштаба вашего приложения.

Комментарии:

1. Будет ли это работать с каталогом изображений, хранящихся в MySQL?