竜@コンプネットです turgogears.widgets.TableForm の使い方がどうもよく分かりません
TableFormを使ったフォームのバリデートに @validator, @error_handler を使うと、 バリデートエラー時に表示されるフォームの action や name などのアトリビュートが 無効になります 例えば以下のようなコードを考えます from turbogears.widgets import widgets, validators from turbogears import controllers, expose, validate, error_handler, url class FieldList(widgets.WidgetsList): id = widgets.HiddenField('id', validator=validators.Int()) message = widgets.TextField('message, label=_('message'), attrs=dict(size=64), validator=validators.UnicodeString(not_empty=True, max=64)) table = widgets.TableForm(name='table_form', fildes=FieldList(), action=url('/update') submit_test=_('Update') class Root(controllers.RootController): @expose() def edit(self, *args, **kwds): return dict(template=''' <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:py="http://purl.org/kid/ns#"> <head> <meta content="text/html; charset=UTF-8" http-equiv="content-type"/> <title py:content="_('Sample)"/> </head> <body> <div py:content="form.display()"/> </body> </html> ''', form=table) @expose() @error_handler(edit) @validate(form=table) def update(self, *args, **kwds): pass 9行目から12行目で、TableFormのインスタンスを作成しています 9> table = widgets.TableForm(name='form', 10> fildes=FieldList(), 11> action=url('/update') 12> submit_test=_('Update') このインスタンスを最初に表示したときは、formタグは <form action="/update" method="post" class="tableform" name="table_form"> と予想通りの結果が得られます ここでわざとエラーになるような入力をして、submitすると 33、34行目の @error_handler(edit) および @validate(form=table) の効果で edit() が呼び出され、再度 table インスタンスが表示されます 32> @expose() 33> @error_handler(edit) 34> @validate(form=table) 35> def update(self, *args, **kwds): このときのformタグは <form method="post" class="tableform" name="form"> というように、インスタンスの作成時に指定した、name や action などの値が無視されてしまいます これは、submit_text でも同じく、ヴァリデートエラーのときには値が無視されます TableFormの使い方を間違えているのでしょうか? -- Nakane Ryuji living at Nagoya // mailto:[EMAIL PROTECTED] --~--~---------~--~----~------------~-------~--~----~ このメッセージは、次の Google グループへの参加を申し込まれたことを確認す るために送信されました。 Google グループ "turbogears-ja" グループ。 このグループに投稿するには、次の宛先にメールを送信してください。 turbogears-ja@googlegroups.com このグループから退会するには、次へメールをお送りください。 [EMAIL PROTECTED] その他のオプションについては、次の URL からグループにアクセスしてくださ い。 http://groups.google.co.jp/group/turbogears-ja?hl=ja -~----------~----~----~----~------~----~------~--~---