Flask форма SelectField - PullRequest
       10

Flask форма SelectField

0 голосов
/ 05 апреля 2020

Мой app.py выглядит так:

from flask import Flask,render_template,url_for,request
from flask_bootstrap import Bootstrap
from wtforms import SelectField
from flask_wtf import FlaskForm

app = Flask(__name__)
Bootstrap(app)


def Form(FlaskForm):
    panel_brand = SelectField('Panel Brand',choices=[('tr','trina'),('lo','longi'), ('ph','phono'), ('leap','leapton')])
    mounting = SelectField('Mounting',choices=[('tr','trina'),('lo','longi'), ('ph','phono'), ('leap','leapton')])
    inverter = SelectField('inverter',choices=[('Fronius10','Fronius 10'),('Fronius5','Fronius 5'), ('huawei6','huawei 6'), ('huawei8','huawei 8') , ('SolarEdge125','SolarEdge 12,5')])
    order_fulfillment = SelectField('orderfulfillment',choices=[('all3','Panels + inverter + mounting'),('Panels','Panels'),('panelsinv','Panels + Inverter'),('installer','By Installer')])


@app.route('/', methods=['GET','POST'])
def index():
    form = Form(FlaskForm)
    return render_template('index.html', form=form)
if __name__ == '__main__':
    app.run(debug=True)

И мой индекс. html выглядит так

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <form method="POST">
        {{ form.csrf_token }}
        {{ form.panel_brand }}
        {{ form.mounting }}
        {{ form.inverter }}
        {{ form.order_fulfillment }}
    <input type="submit">
    </form>
</body>
</html>

Когда я запускаю файл app.py, он просто показывает мне кнопку отправки а не ожидаемые выпадающие списки panel_brand, mounting, inverter, order_fulfillment - которые имеют последующие значения. Я полагаю, что мне не хватает некоторых вызывающих идентификаторов в функции index()? Я не уверен, как это сделать в правильном синтаксисе. Кто-нибудь может мне помочь с этим?

Ответы [ 2 ]

1 голос
/ 05 апреля 2020

Кажется, ваше объявление form подклассирует другой объект.

Попробуйте:

def index():
    form = Form(request.form)
1 голос
/ 05 апреля 2020

В вашем коде есть функция, в которой он должен иметь класс.

Изменить

def Form(FlaskForm):
...
form = Form(FlaskForm)

на

class Form(FlaskForm)
...
form = Form(request.form)

и

...