Как рендерить данные Dynami c в Flask / Jinja2 / WTForms? - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь визуализировать динамический c QR-код в Flask с использованием шаблона Jinja2, чтобы пользователь нажимал кнопку «Купить сейчас», управляемую WTForms, которая вызывает функцию для визуализации платежа qr -code.

Если я показываю sh вывод, он отображается в виде строки, поэтому я знаю, что функция QRGen работает.

Мои переменные stati c все экспортируются правильно в рендеринга шаблона, но если я экспортирую 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)

1 Ответ

0 голосов
/ 19 июня 2020

В последней строке функции index в routes.py передайте qr1=qr1

return render_template('index.html', title='Home', shopform01=shopform01, qr1=qr1)

Надеюсь, это поможет.

...