Python / Flask / WTForm / Jinja: передача значения переменной в поле wftform для «Обновить страницу» - PullRequest
0 голосов
/ 29 ноября 2018

Я сохраняю FlightNo, Terminal и Status в MongoDB.Я хочу создать страницу обновления, чтобы значения могли обновляться.Как я могу передать существующие значения из базы данных в поле WTForm?

app.py:

# Document just for your info!
Document = { "_id" : ObjectId("5bfffb603129d742ac94b990"), "flightno" : "LH-100", "terminal" : "A1", "status" : "Inbound" }

@app.route("/update/<id>"):
def update(id):
     currFlight = db.find_one({"flightno": id})
     form = FlightForm()

     if request.method == "POST":
        f = session["flightno"] = form.flightno.data
        t = session["terminal"] = form.terminal.data
        s = session["status"] = form.status.data

        query = {"flightno": f}
        update = {"$set": {"flightno": f, "terminal": t, "status": s}}
        db.update(query, update)

        return redirect(url_for("index"))
     return render_template("update.html", currFlight=currFlight)

update.html:

<form method="POST">
   {{form.hidden_tag()}}
   {{form.flightno.label}} {{form.flightno}} <br>
   {{form.terminal.label}} {{form.terminal}} <br>
   {{form.status.label}} {{form.status}} <br>
   {{form.submit()}}
</form>

Как я могупередать значения из currFlight в форму, чтобы поля уже были заполнены значениями из currFlight?Я попробовал value="", хотя он просто работал с StringField.Terminal и Status равны SelectFields, поэтому он не работает.

1 Ответ

0 голосов
/ 29 ноября 2018

Когда метод формы 'POST', вы читаете значения из полей формы и сохраняете их в базе данных.Аналогичным образом, когда метод формы имеет тип GET, вы можете читать значения из базы данных и передавать их в форму.См. Код ниже -

#after your if block
elif request.method == "GET":
    form.flightno.data = currFlight.flightno
    form.terminal.data = currFlight.terminal
    form.status.data = currFlight.status

Когда страница загружается в первый раз, метод будет GET, а поля форм будут иметь значения из базы данных.Обязательно передайте форму в шаблон HTML, как показано ниже -

return render_template("update.html", currFlight=currFlight, form=form)
...