Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 循环时在Flask-Jinja2中编码为utf-8二进制数据_Python_Html_Flask_Jinja2 - Fatal编程技术网

Python 循环时在Flask-Jinja2中编码为utf-8二进制数据

Python 循环时在Flask-Jinja2中编码为utf-8二进制数据,python,html,flask,jinja2,Python,Html,Flask,Jinja2,我正在使用jinja2模板中的for循环从数据库中提取数据 {{p.author.profile_picture}}在我的数据库中保存为二进制数据。我必须将其编码为utf-8格式才能在网站上看到图像。我可以在循环过程中改变它吗?或者有没有简单的方法将其传递回我的python后端?我用的是烧瓶 {%p在posts%} {{p.author.username} {{p.title}} {{p.text | safe}} {%endfor%} @应用程序路径(“/”) def home(): post

我正在使用jinja2模板中的for循环从数据库中提取数据

{{p.author.profile_picture}}
在我的数据库中保存为二进制数据。我必须将其编码为utf-8格式才能在网站上看到图像。我可以在循环过程中改变它吗?或者有没有简单的方法将其传递回我的python后端?我用的是烧瓶

{%p在posts%}
{{p.author.username}
{{p.title}}
{{p.text | safe}}
{%endfor%}
@应用程序路径(“/”)
def home():
posts=Post.query.order\u by(Post.date.desc())
返回呈现模板('home.html',posts=posts)
您应该将JPEG压缩的二进制图像数据包含在数据URL中。
如果您想在jinja2模板中执行此操作,我建议您使用

创建函数并将其添加到过滤器下的jinja环境中

import base64

def b64encode(data):
    return base64.b64encode(data).decode()

app.jinja_env.filters['b64encode'] = b64encode
您可以这样在模板中使用过滤器

<img src="data:image/jpg;base64,{{ p.author.profile_picture | b64encode }}" />


您现在应该可以看到该图像。

没有
UTF-8二进制数据。UTF8是一种将文本编码为字节的方法。Python 3字符串是UTF8。你需要做的恰恰相反,将字节编码成字符串谢谢!!!这正是我需要的。它有效。:)