EDITED私の元々の質問は十分ではなかった。私は、ユーザーがwtformsでTextFieldに値を渡すことを許可したい、そして、それらが追加された後に入力された値が表示されます。これにより、ユーザーは複数の値を渡してから、元々入力されたすべての値に対して最後の「Sumbit」ボタンを押すことができます。テキストボックスからデータをwtformに渡してブラウザで表示します。
私は入力したテキストで何かをするためのthis questionを見つけました。これは私が試みたものです。
私のPythonコード:
from flask import Flask, request, render_template, redirect
from wtforms import TextField, Form, SubmitField
def redirect_url(default='index'):
return request.args.get('next') or \
request.referrer or \
url_for(default)
class RegionForm(Form):
field = TextField('Region')
Submit = SubmitField('AddRegion')
fieldList = []
def main():
app = Flask(__name__)
@app.route('/region/', methods=['GET'])
def region():
form = RegionForm(request.form)
return render_template("region.html",
form=form)
@app.route('/add/', methods=['POST'])
def add():
request.form['fieldList'].append(request.form['field'])
return redirect(redirect_url())
app.run(debug=True)
私のhtmlコード:
<form action="/add/" method="Post">
{% for field in form %}
<tr>
<th>{{ field.label }}</th>
<td>{{ field }}</td>
</tr>
{% endfor %}
</form>
{% for item in form.fieldList %}
{{ item }}
{% endfor %}
しかし、私はテキストを入力し、 "AddRegion" ボタンをクリックした後、私は次のエラーを取得する:The browser (or proxy) sent a request that this server could not understand.
をただし、私はrequest.form['fieldList'].append(request.form['field'])
行をコメントアウトし、リダイレクトが発生しますが、テキストはフォームの隠しリストに追加されていません。どうすればいいですか?をテキストに追加してをリダイレクトすると、ユーザーはさらにテキストを追加できますか?残りはうまく動作するので、この行だけにエラーがあるように思われます。
フィールドにテキストを動的に追加し、そのフィールドをブラウザに表示させるにはどうすればよいですか? その後、完全な領域フィールドが追加されたら、後で別の関数で処理するためにそのリストを取得できるようにします。
グッドキャッチ、私はまだ同じエラーを取得しています。 'request.form ['fieldList'] ... ...'で行をコメントアウトすると、うまく動作しますが、フォームを非表示にしたいのと同じ形で入力を追加しません。 – unasalusvictis