現在地プレーで2つの質問があります
(1)だけform.py.でSelectFieldクラスのdefault=(value, label)
オプションを使用して、フォームのデフォルト値を実装するには
は、あなたのチームメンバーとそのオプションの数値としてジョニーをデフォルトにしたいと仮定し、あなたがdefault=(value, label)
を使用して、このような何かを行うことができます0です:だけでタプルを渡し
class TeamForm(Form):
user = SelectField(u'Team Member', default=(0, "Johnny"))
フォーム(値、ラベル)。あなたの値はint、文字列、何でもかまいません。 (Submitボタンもありません。私は偶然であると想定しています。)
(2)あなたの意見では何をしているのか分かりません。チームのメンバーに応じて選択フィールドをループする必要があります。たとえば、3人のメンバーを持つチームの場合、3人のメンバーが自動選択した3つの選択フィールドを表示します。フォームをレンダリングするときに、ドロップダウン・フィールドのユーザーにこれらを表示するか、テンプレートのレンダリング時に実際に照会結果を表示するのに問題があるとしていますか?
あなたはフォームを使用しているので、私はあなたがPOST経由でサーバーにデータを送信することを前提としています。典型的なビューパターンは空白のフォームオブジェクトを作成し、テンプレートがGET要求を介してレンダリングされたときにそのオブジェクトをユーザーに渡します。ユーザーがデータを入力して送信すると、POST要求を介して送信されます。あなたの意見にクラスを使用していることに気付きました。ルーティングの代わりにデコレータを使用して、関数を呼び出すようにしてください。
form.py:
たとえば、あなたがあなたの形で劇中の3つのオプションを持っていて、ドロップダウンでユーザーにそれらを表示したい、場合は、このような何かを実装したいと思います:
# Sample Form class; choices can be overridden later.
class TeamForm(Form):
user = SelectField(u'Team Member', default=(0, "Johnny"), choices=[(0, "Johnny"), (1, "Sarah"), (2, "Bill")])
submit= SubmitField('Submit')
view.py
@app.route('/team', methods=['GET','POST'])
def team_view(id):
user_selection = None
form = TeamForm()
# This code block will only execute on POST
if request.method == 'POST':
if form.validate_on_submit():
user_selection = form.user.data
form.user.data = ''
return redirect(url_for(some-other-page.html))
members =db.session.query(teams).filter_by(t_id = id).all()
# This next line will override the default choices in your form.
form.user.choices = [(member.id, member.name) for member in members]
return render_template("members.html",form=form)
メンバー。HTML
オプション1:
<!-- Assume you're using Flask-Bootstrap & WTForms -->
{% import "bootstrap/wtf.html" as wtf %}
<!-- Render your Team form; this is where you call to your form object -->
{{ wtf.quick_form(form) }}
オプション2:
<!-- Manually construct your template -->
<form method="POST" action="/team">
<div>{{ form.user }}</div>
<div>{{ form.submit() }}</div>
</form>
あなたSelectField定義に '選択肢' を提供しないのはなぜ? –
選択肢が動的なためです。各チームはメンバーが異なるため、選択肢が変更されるたびに変更されます。 – neelima
あなたはmyviewでこのような動的選択を生成することができますhttp://stackoverflow.com/questions/12850605/how-do-i-generate-dynamic-fields-in-wtforms –