0

フラスコ/wtforms アプリケーションがあり、wtforms 0.6.ish から 1.0.5 にアップグレードしています。開発ボックスは wtforms 0.6 を使用する ubuntu でしたが、製品は wtforms 1.0.5 を使用する amazon ami になります。

誰の利益のためにも、これまでの変更点は次のとおりです。

から:

from flask.ext.wtf import Form, TextField
from flask.ext.wtf import Required

に:

from wtforms import Form,  TextField, validators

から:

def index():
  form=SubmitForm()
  if form.validate_on_submit():
    return render_template('js.html',ht=form.ht.data)

に:

def index():
  form=SubmitForm
  if request.method == 'POST' and form.validate():
    return render_template('js.html',ht=form.ht.data)

また:

class SubmitForm(Form):
    ht = TextField('ht', validators = [Required()])

class SubmitForm(Form):
   ht = TextField('ht',  [validators.Required()])

問題は、wtforms 1.0.5 ではフォーム変数 'ht' が設定されないことです。コンソールに出力しようとすると、「なし」です。テンプレートに変更を加えていません。クラスにデフォルト値を設定できますが、ユーザーがフォームに入力した値に置き換えられません。

4

1 に答える 1

0

新しいコントローラーでは、実際には送信フォームのインスタンスを作成しません (括弧がありません)。また、Flask-WTForms 拡張機能からプレーンな WTForms に切り替えました。Flask-WTForms は自動的に使用するrequest.formため、必要はありません。標準の WTForms を使用する場合はrequest.form、コンストラクターに渡す必要があります。

# You have
form=SubmitForm

# It should be
form = SubmitForm(request.form)
于 2013-11-02T14:30:32.490 に答える