烧瓶形式。如何使视图中的变量在 forms.py 中可见
Flask forms. How to make variable from views visible in forms.py
我正在使用 Flask 和 WTForms。
我在烧瓶中有一个视图:
@app.route('/test/<bar>')
def foo(bar):
form = SomeForm():
if form.validate_on_submit():
query = User(somedata = form.somedata.data,
another_data = form.anotherdata.data)
db.session.add(query)
db.session.commit()
flash('ok')
return redirect(url_for('main.index'))
return render_template('test.html', form=form, bar=bar)
和一个表格:
#imports here
class SomeForm(Form):
ch1 = SomeTable.query.filter_by(age='1').all()
choice1 = SelectField('Select data', choices=[(e.name, e.name) for e in ch1])
我需要从我的视图中获取变量 'bar' 并使其在我的表单中可见,以便在表单的 select 字段中使用 2 个条件(年龄和酒吧)进行查询。
在 __init__
中执行此操作,而不是在定义表单 class 时执行此操作。
class SomeForm(Form):
def __init__(self, bar, *args, **kwargs):
ch1 = SomeTable.query.filter_by(bar=bar)
self.choice1.kwargs['choices'] = tuple((e.name, e.name) for e in ch1)
super(SomeForm, self).__init__(*args, **kwargs)
然后在视图中:
form = SomeForm(bar)
我正在使用 Flask 和 WTForms。 我在烧瓶中有一个视图:
@app.route('/test/<bar>')
def foo(bar):
form = SomeForm():
if form.validate_on_submit():
query = User(somedata = form.somedata.data,
another_data = form.anotherdata.data)
db.session.add(query)
db.session.commit()
flash('ok')
return redirect(url_for('main.index'))
return render_template('test.html', form=form, bar=bar)
和一个表格:
#imports here
class SomeForm(Form):
ch1 = SomeTable.query.filter_by(age='1').all()
choice1 = SelectField('Select data', choices=[(e.name, e.name) for e in ch1])
我需要从我的视图中获取变量 'bar' 并使其在我的表单中可见,以便在表单的 select 字段中使用 2 个条件(年龄和酒吧)进行查询。
在 __init__
中执行此操作,而不是在定义表单 class 时执行此操作。
class SomeForm(Form):
def __init__(self, bar, *args, **kwargs):
ch1 = SomeTable.query.filter_by(bar=bar)
self.choice1.kwargs['choices'] = tuple((e.name, e.name) for e in ch1)
super(SomeForm, self).__init__(*args, **kwargs)
然后在视图中:
form = SomeForm(bar)