###前提・実現したいこと
PythonのFlaskのフレームワークを用いて、QRコードを作成して、それを表示させるプログラムを作成しています。(python3)
わからないこと
QRコードをio.BytesIO()に保存したのち、
(1)render_template()を使ってこの画像をHTMLに当てはめる方法
(2)HTML側のテンプレートの記載方法
###発生している問題・エラーメッセージ
HTMLに画像が表示されません。404エラーが出ます。
###該当のソースコード
Python
1# import module 2from flask import Flask, render_template, Response,request,redirect,url_for 3import datetime 4from PIL import Image 5import qrcode as qr 6import io 7 8# flask incetance 9app = Flask(__name__) 10 11# index page, input code 12@app.route('/') 13def index(): 14 now = datetime.datetime.now() 15 timeString = now.strftime("%Y-%m-%d %H:%M") 16 return render_template('index.html',time=timeString) 17 18 19@app.route('/input_code', methods=['POST']) 20def input_code(): 21 code_input = request.form['code'] 22 qr_img = QRmaker(code_input) 23 img_bin = io.BytesIO() 24 qr_img.save(img_bin, 'png') 25#seek(0)が必要 26 img_bin.seek(0) 27# Responseやsend_fileだとうまく表示されます。 28 return Response(img_bin, mimetype='image/png') 29 #return send_file(img_bin, mimetype='image/png') 30 31#ここの記述の仕方がわかりません。404エラーが出ます。 32 #fig_url=img_bin 33 #return render_template("output_code.html", data=code_input,fig=fig_url) 34 35# retry and quit 36@app.route('/event', methods=['POST'] ) 37def event(): 38 if request.method == 'POST': 39 if request.form['submit'] == 'Retry': 40 return redirect(url_for('index')) 41 elif request.form['submit'] == 'Quit': 42 return Response('Please close the web browser') 43 else: 44 pass # unknown 45 elif request.method == 'GET': 46 return redirect(url_for('index')) 47 48def QRmaker(code): 49 qr_img = qr.make(str(code)) #codeの文字をQRコードに変換 50 # img.show() #生成したQRコードを表示 51 ts = datetime.datetime.now() # grab the current timestamp 52 # construct filename 53 filename = "qrcode_image/{}.png".format(ts.strftime("%Y-%m-%d_%H-%M-%S")) 54 qr_img.save(filename,"png") #QRコードに名前をつけて保存 55 56# メニュー画面作成 57if __name__ == '__main__': 58 app.run(host='0.0.0.0', debug=True)
HTML
1<!--index.html --> 2<head> 3 <title>QR Generater</title> 4</head> 5<body> 6 <p>The date and time on the server: {{ time }}</p> 7 <form action="{{ url_for('input_code') }}" method="post"> 8 <input type="text" name="code"> 9 <input type="submit"> 10 </form> 11</body> 12</html>
HTML
1<!--output_code.html --> 2<head> 3 <meta charset="UTF-8"> 4 <title>QR Code</title> 5</head> 6 <body> 7 <form action={{ url_for('event') }} method="post"> 8 <input type="submit" name="submit" value="Retry"> 9 <input type="submit" name="submit" value="Quit"> 10 <br> 11 <h2>{{data}}</h2> 12 13 <h2>QR image</h2> 14<!--ここの記述があっているかどうかわかりません。--> 15 <img src="{{fig }}"> 16 </body> 17</html>
###補足情報

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/26 23:58