4

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?
4

2 に答える 2

0

問題の解決に役立つ可能性がある 1 つのワークフローを次に示します。問題の解決に使用するテクノロジが過度に規範的になりすぎないように、特定のコード スニペットではなくワークフローを提供することにしました。

GET
if session contains form data:
  add form data from session to template context
display form

POST
if form validates:
  clear this form data from session
  save to db
else:
  save form data to session
  redirect to GET handler
于 2013-09-21T22:44:41.727 に答える