通过flask / python以HTML显示来自ouchDB的图像附件
作者:互联网
我想使用flask&从沙发床获取图像附件. python然后将图像传递给imgurl.html进行显示.
问题是我只能得到这个:
在0x103b9c0b8>上的ouchdb.http.ResponseBody对象回来.
app.py
from flask import Flask, request, render_template, flash, request, url_for, redirect
import couchdb
import requests
app = Flask(__name__)
couch = couchdb.Server('http://127.0.0.1:5984/')
db = couch['test2']
doc = db.get_attachment('2', 'aboutme.jpg', default=None)
print("doc: ", doc)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/imgurl/')
def imgurl():
return render_template('imgurl.html', doc = doc)
@app.route('/page/')
def page():
return("Andrew Irwin")
#return render_template('index.html')
if __name__ == '__main__':
app.run()
的test.html
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<img src="{{ doc }}" id="imgslot" >
<h1 id="h1id"> {{ doc }} </h1>
</body>
</html>
解决方法:
一种选择是base64编码从couchdb返回的图像数据,并将编码后的数据作为字符串传递给模板,以便在其中进行渲染.例如.
img = db.get_attachment('2', 'aboutme.jpg', default=None).read()
img_b64 = base64.b64encode(img)
def imgurl():
return render_template('imgurl.html', doc = img_b64)
然后在模板中:
<img src="data:image/png;base64,{{ doc }}" id="imgslot" >
取决于您的安全模型的另一种选择可能是,通过将图片网址添加到图片标签(例如, Getting url for an attachment
标签:html,python,flask,couchdb 来源: https://codeday.me/bug/20191010/1885474.html