1

のようにhtmlでフォームを書きたい

form    
    input type.....   
    input type.....    

次に、これを py に記述します。

f = forms.register_form()
if not f.validates():
    return render.register(f)

問題は、フォームが検証に合格していない場合、どのように情報をユーザーにフィードバックできるかです。速度に #springbind のようなものはありますか?

4

1 に答える 1

0

私の web.py プロジェクトからのスニペットで答えさせてください。

bookeditform = form.Form(
    form.Textbox('title', form.notnull),
    form.Textbox('author', form.notnull),
    form.Textbox('year', 
        form.Validator('Must be a number', lambda x: not x or int(x) > 0)),
)

# ...

class NewBookHandler:
    def GET(self):
        f = bookeditform()
        return render.bookedit(f, "New book")

    def POST(self):
        f = bookeditform()
        if f.validates():
            newid = db.insert('book', title=f.d.title, 
                              author=f.d.author, year=f.d.year)
            raise web.seeother('/book/%s' % newid)
        else:
            return render.bookedit(f, "New book")

要約:

  • ハンドラー onGETでは、空のフォームを単純にレンダリングします。
  • で、フォームPOSTをロードし、有効かどうかを確認します。
    • その場合は、必要なアクションを実行し、ユーザーを成功ページにリダイレクトしますPOSTユーザーはページを更新して同じアクションをやり直すことができるため、 では何もレンダリングしないでください。
    • そうでない場合は、フォームを再レンダリングします (入力されたデータが含まれ、エラー メッセージが表示されます)。
于 2012-05-10T20:44:17.933 に答える