为什么Flask应用程序中的图像不能正确显示?

2024-04-24 03:10:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了这样一个用户类:

class User(UserMixin, db.Model):
        ###
        avatar = db.Column(db.String(64), default='app/static/upload/default.jpeg')

用户上传头像如下(UPLOAD_DIR is app/static/UPLOAD):

^{pr2}$

然后我检查了'uploads'目录并确认img在那里;我在shell中得到了这个:

>>> z.avatar
u'C:\\Users\Administrator\\Desktop\\weiboLITE\\app/static/uploads\\162421.jpg'

现在我运行服务器,发现图像无法显示。我的模板是这样的:

<div class="thumbnail">
    <img src="{{ user.avatar }}" alt="Avatar not found.">
</div>

所以我想知道img应该以什么格式出现在Jinja2模板中。。。?或者我错了在哪里?请告知。在


Tags: 用户div模板appdefaultimgdbmodel
1条回答
网友
1楼 · 发布于 2024-04-24 03:10:17

你能提供一些额外的信息吗?用于呈现jinja2模板的路由的代码是什么?在

另外,看起来您还没有将新路径提交到数据库中—您应该在新的化身路径添加到用户对象后调用db.session.commit(),以确保新数据正确保存:

current_user.avatar = os.path.join(
                current_app.config['UPLOAD_DIR'], 
                form.avatar.data.filename)
        db.session.add(current_user)
        db.session.commit()   # Try adding this line 
        flash('Upload completed.')

如果要向jinja2模板发送一个新的用户对象,这一点很重要。当您在交互式shell中使用单个用户对象时,路由可能会被正确地保存,但是当您在路由中执行一个新的User.query并使用render_template()将查询对象作为上下文发送到模板时,它就不正确了。在

最后,应该使用url_for()调用图像位置。查看另一个post以获取指导。在

祝你好运我希望这能帮上忙!在

相关问题 更多 >