【问题标题】:Display image from MySQL in Flask template在 Flask 模板中显示来自 MySQL 的图像
【发布时间】:2020-12-11 14:23:40
【问题描述】:

如何在地址存储在 MySQL 中的 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>

【问题讨论】:

    标签: python mysql flask


    【解决方案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的继承者

    对于在生产中提供静态资产,这是另一回事,具体取决于您用于提供烧瓶应用程序的内容以及应用程序的性质和规模。

    【讨论】:

    • 它是否适用于存储在 MySQL 中的图像目录?
    猜你喜欢
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 2015-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多