GET メソッドと POST メソッドの両方が同じハンドラー クラスにあり、フォームの検証に失敗した後にユーザー入力をフォーム フィールドに入力したい場合は、次のようにします...
Class CommentHandler(BaseHandler):
def get(self, form=None):
if form is None: # create new form unless populated form is passed in
form = CommentForm()
# query DB and create template context
self.render('page.html', **context)
def post(self):
form = CommentForm(self.request.POST)
if form.validate():
# populate entity with form data and save to DB
return self.redirect_to('page')
self.get(form=form) # pass populated form back to user for editing
これがフォーム データをユーザーに返す最善の方法かどうかはわかりませんが、うまくいくようです。私の質問は、GET メソッドと POST メソッドが異なるハンドラー クラスにある場合、そのデータをフォームに戻すにはどうすればよいかということです。
class PageHandler(BaseHandler):
def get(self):
# displays form to user
class CommentHandler(BaseHandler):
def post(self):
# processes POSTed form data...
# but if form.validate() fails,
# how can I pass the form data back to the user
# so they can edit their form input?