Jinja2没有显示图像

时间:2016-11-29 22:53:18

标签: python flask sqlite sqlalchemy jinja2

我在上传文件夹中显示照片时遇到问题。 我有一个表单,用户可以输入标题,描述和上传图像,然后将其插入数据库。我可以显示我刚刚在模板上添加的所有数据,除了图像,只有X而不是图像。

PS。 image已成功下载到uploads文件夹,并且文件名已成功添加到数据库中。它只是不显示在页面上。

app.py

#route to content page
@app.route('/dashboard', methods = ['GET', 'POST'])
def dashboard():
    error = None
    form = MessageForm()
    if form.validate_on_submit():
        filename = secure_filename(form.photo.data.filename)
        form.photo.data.save(os.path.join('uploads/', filename))
        new_message = BlogPost(
            form.title.data,
            form.description.data,
            form.photo.data.filename,
            current_user.id
        )
        db.session.add(new_message)
        db.session.commit()
        flash("Your recipe was successfully posted. Thanks!")
        posts = db.session.query(BlogPost).all()
        return render_template('dashboard.html', posts = posts, form = form,
                               error = error)
    else:
        posts = db.session.query(BlogPost).all()
        return render_template('dashboard.html', posts = posts, form = form,    
                               error = error)

模板

  {% for post in posts %}
  <div class="col-xs-12 col-sm-6 col-md-4 col-lg-5 masonry-item"> 
    <div class="box-masonry"><a href="#" title="" class="box-masonry
     image with-hover-overlay">
    <img src="uploads/{{ post.photo }}" alt="" class="img-responsive"
     </a>
      <div class="box-masonry-hover-text-header"> 
        <h4> <a href="#">{{ post.title }}</a></h4>
        <div class="box-masonry-desription">
          <p>{{ post.description }}</p>
          <p><strong>{{ post.author.name }}</strong></p>
        </div>
      </div>
    </div>
  </div>
  {% endfor %}

1 个答案:

答案 0 :(得分:1)

来自Flask Doc

  

要为静态文件生成网址,请使用特殊的&#39;静态文件&#39;端点   名:

     

url_for('static', filename='style.css')

     

该文件必须作为static / style.css存储在文件系统中。

在你的情况下你应该使用:

{{ url_for('static', filename='uploads/' + post.photo) }}