Используя базовую c Wt Flask форму, я не могу понять, как заставить некоторые значения для формы / поля перед отображением для пользователя - PullRequest
0 голосов
/ 26 марта 2020

Я установил flask -wtf Я запускаю скрипт для «постоянного» редактирования логических значений. Это означает, что use может считывать значение (и python будет вводить их по умолчанию в форму, которую увидит пользователь) или может записывать значение (и python будет принимать их из формы для обновления какого-либо устройства)

import flask
import flask_wtf
import wtforms

app = flask.Flask(__name__, instance_relative_config=False)

app.config['WTF_CSRF_ENABLED'] = False
app.secret_key = 'super secret key'

class ValidatedForm:
    active = wtforms.BooleanField("Selected", default=False)

class MyBoolForm(flask_wtf.FlaskForm, ValidatedForm):
    value = wtforms.BooleanField()

def populate(form, data):
    for label in data:
        field = wtforms.FormField(MyBoolForm)
        setattr(form, label, field)

class InputForm(flask_wtf.FlaskForm):
    """Entry of a several value."""

    read_submit = wtforms.SubmitField('Read')
    write_submit = wtforms.SubmitField('Write')

def debug(data):
    for item in data:
        if item+'-value' in flask.request.form and flask.request.form[item+'-value'] == 'y':
            flask.flash(f"{item} was set")
        if item+'-active' in flask.request.form and flask.request.form[item+'-active'] == 'y':
            flask.flash(f"{item} was selected")
    if 'write_submit' in flask.request.form and flask.request.form['write_submit'] == 'Write' :
        flask.flash(f"write was pressed")
    if 'read_submit' in flask.request.form and flask.request.form['read_submit'] == 'Read' :
        flask.flash(f"read was pressed")

# the dynamic configuration
data = ["peperoni", "anchoix", "olives", "jambon"]

@app.route('/', methods=('GET', 'POST'))
def input():

    # enter configuration into the form
    populate(InputForm, data)

    # make the form and display it
    form = InputForm()

    # back from the form
    if form.validate_on_submit():

        pprint.pprint(flask.request.form)
        debug(data)

        # action with input
        # how can I force some values that will be displayed in the form ?

    else:
        print(form.errors)


    return flask.render_template('gpio_input.html', title="gpio configuration demo", form=form)

if __name__ == '__main__':
    app.run(debug=True)

Я хочу контролировать и форсировать значение по умолчанию, которое будет отображаться. Пытался изменить form.data, но не изменилось ... Очень странно .. Есть намеки?

...