flask - 如何在 Flask / Jinja2 / WTForms 中呈现动态数据?
问题描述
我正在尝试使用 Jinja2 模板在 Flask 中呈现动态二维码,以便用户单击由 WTForms 管理的“立即购买”按钮,该按钮调用一个函数来呈现支付二维码。
如果我刷新输出,它确实显示为一个字符串,所以我知道 QRGen 函数正在工作。
我的静态变量都在渲染模板中正确导出,但如果我导出qr1
我会收到以下错误:
UnboundLocalError:分配前引用的局部变量“qr1”
我猜那是因为变量是动态实例化的。这是代码:
#INDEX.HTML
<form action="" role="form" method="post">
{{ shopform01.hidden_tag() }}
{{ shopform01.buy01( type="button", class_="button", id="buybutton01", value="Buy Now") }}
</form>
{{ qr1 }}
#MODELS.PY
from flask_qrcode import QRcode
def QRGen(id,price):
nanodress = app.config['NANO']
buytime = str(datetime.now().strftime("%y%m%d%H%M%S%f"))
nanoprice = requests.get("https://api.coingecko.com/api/v3/simple/price?ids=nano&vs_currencies=usd").json()["nano"]["usd"]
bits = "nano:"+nanodress+"?amount="+str(price/nanoprice*0.0000000001)+buytime+id
def __repr__(self,bits):
return QRcode.qrcode(self.bits, error_correction='H', fill_color='#802929', icon_img='shop/nano.png')
#ROUTES.PY
from app.models import QRGen
@app.route('/index', methods=['GET', 'POST'])
def index():
...
price01 = 10
shopform01 = Buy01()
if shopform01.validate_on_submit():
qr1 = QRGen("01",price01)
...
return render_template('index.html', title='Home', shopform01=shopform01)
解决方案
在 routes.py 中索引函数的最后一行传递一个qr1=qr1
return render_template('index.html', title='Home', shopform01=shopform01, qr1=qr1)
希望能帮助到你。
推荐阅读
- discord - 如何制作不和谐的金钱机器人
- amazon-web-services - 使用新的启动模板版本更新 AWS ASG 的正确方法
- reactjs - 从 api 获得响应后如何测试 setState
- sql - Oracle SQL where 子句在某些日期不起作用
- postgresql - 如何在表中未定义约束的情况下修复“没有与 ON CONFLICT 规范匹配的唯一或排除约束”
- jquery - Ember UI 未加载
- amazon-web-services - 如何在新的 Cloudformation 模板中引用 Cloudformation 资源?
- python - 找到这些图片的中心,OpenCV-Python
- sql-server - SQL Server 访问已备份且在当前版本中不可用的旧数据
- html - 我怎样才能只闪烁背景而不是文本