Что ж, при работе с колбой у вас должен быть отдельный файл forms.py, в котором вы будете создавать все свои формы и использовать шаблонизаторы jinja2.
Как бы я сделал что-то подобное, создав такие вещи:
1.app / forms.py
from flask_wtf import FlaskForm
from wtforms import StringField, BooleanField, SubmitField
from wtforms.validators import DataRequired
class ConfigForm:
conf1 = StringField('Config 1', validators=[DataRequired()])
conf2 = StringField('Config 2', validators=[DataRequired()])
confirm = BooleanField('Cnfirm')
submit = SubmitField('Submit')
2.app / templates / config.py
<html>
<body>
<h1>Config</h1>
<p>
{{ form.conf1.label }}<br>
{{ form.conf1(size=(42) }}
{% for error in form.conf1.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
</p>
<p>
{{ form.conf2.label }}<br>
{{ form.conf2(size=(42) }}
{% for error in form.conf2.errors %}
<span style="color: red;">[{{ error }}]</span>
{% endfor %}
</p>
<p>{{ form.submit() }}</p>
</body>
</html>
3.app / rout.py
from flask import Flask render_template, redirect, url_for, request
from forms import ConfigForm
app = Flask(__name__)
@app.route('/config/<confirm>', methods=['GET', 'POST'])
def config(confirm):
form = ConfigForm()
if form.validate_on_submit():
if form.validate_on_submit():
db.get.value1.for.form = form.conf1.data
db.get.value2.for.form = form.conf2.data
if confirm:
db.get.value3.form = form.confim.data
db.session.commit()
flash('You\'r changes have been saved!')
return redirect(url_for('config'))
elif request.method == 'GET':
form.conf1.data = db.get.value1.for.form
form.conf2.data = db.get.value2.for.form
return render_template('config.html', form=form)
@app.route('/')
def index():
confirm = True
return redirect(url_for('config', confirm))
Что я здесь делаю, так это то, что я создаю страницу конфигурации, где данные загружаются из базы данных, и на тот случай, если пользователь захочет обновить данные в посте.метод я обновлю данные в базе данных.
В моем примере, если пользователь войдет на страницу / index, он перенаправит на страницу cinfig и передаст confim = True, который будет обновлен вместе с методом post без каких-либо действий пользователя.необходимо.
Я надеюсь, что этот пример поможет вам найти решение, которое вам нужно.:)