首页 > 解决方案 > 如何在烧瓶中显示生成的二维码

问题描述

我正在制作一个使用用户输入生成二维码并将其保存到指定文件中的网络应用程序。二维码保存后,应在输入框旁边的小框中显示生成的二维码。我试图通过一个 GET 提交按钮来执行此操作,但每次单击它时都会收到错误消息。

第一个代码块用于接收输入并从中制作二维码,第二个代码块是我尝试发回完成的 PNG 并显示它。

蟒蛇代码:

@app.route('/', methods= ['POST'])
def textfield():
    text = request.form['text']
    processed_text = text
    if processed_text == '':
       flash("Please enter a value!")
    else:
       QR(processed_text)
    return render_template('base.html')
    


@app.route('/QR', methods= ['GET'])
def QRimage(text):
    im = Image.open(f'{text}.png')
    data = io.BytesIO()
    im.save(data, "PNG")
    encoded_img_data = base64.b64encode(data.getvalue())
    img_data = encoded_img_data.decode('utf-8')
    return render_template('base.html', value=img_data)

这是尝试显示图像的 HTML:

<img id="picture" src="data:image/jpeg;base64,{{ img_data }}">

以及路由到 /QR 的 GET 按钮:

<form action="/QR" method="GET">
<button type="submit" type="button">QR Button</button>      

标签: pythonhtmlflask

解决方案


Flaskstatic在默认的文件夹中查找静态文件。flask.send_from_directory(directory, filename, **options)如果您想从另一个目录提供文件,请使用。这是一种快速公开静态文件的安全方法。

 @app.route('/QR', methods= ['GET'])
    def QRimage(text):
        return send_from_directory(app.config['UPLOAD_FOLDER'], filename);

参考:API — Flask 文档 (1.1.x) (2021)。可在:https ://flask.palletsprojects.com/en/1.1.x/api/#flask.send_from_directory 获得(访问日期:2021 年 4 月 24 日)。


推荐阅读