松尾です.

def name_edit(self, obj_id,namebox,namele):

このメソッドを

def name_edit(self, obj_id, namebox):

に思ったとおりに動きませんか.

# validate でのエラーでは無いような気がします

07/06/28 に Kazuhisa 
Yamamoto<[&#x30E1;&#x30FC;&#x30EB;&#x30A2;&#x30C9;&#x30EC;&#x30B9;&#x4FDD;&#x8B77;]>
 さんは書きました:
>
> はじめまして。山本と申します。
> widgetsを使用してFormを作成しているのですが、Labelを使用したときにvalidateでエラーが出て困っています。
>
> ・controllers.py
> ----------------------------------------------------------------------------------------------------------
> # coding=utf-8
> from turbogears import controllers, expose, flash,validators,redirect
> from model import names
> from turbogears.widgets import TableForm, TextField, Label,HiddenField
> import turbogears
> from turbogears.validators import NotEmpty
>
> # フォーム情報を定義
> class TestForm(TableForm):
>     obj_id  = HiddenField(name='obj_id')
>     namebox = TextField(name='namebox', label=u'名前',
>                      validator=NotEmpty,
>                      attrs={'size':40})
>     namelen = Label(name='namelen',label=u'長さ')
>     fields = [obj_id,namebox, namelen]
>
> testform = TestForm()
>
> class Root(controllers.RootController):
>     @expose(template="labeltest.templates.form")
>     def default(self, *parts):
>         obj = names.get(parts[0])
>         value = {'obj_id':obj.id,
>                  'namebox':obj.namebox,
>                  'namelen':len(obj.namebox)}
>         return dict(form=testform, action='/name_edit',
>                     value=value, options={})
>
>     @expose()
>     @turbogears.error_handler(default)
>     @turbogears.validate(form=testform)
>     def name_edit(self, obj_id,namebox,namele):
>         user = names.get(obj_id)
>         user.set(namebox=namebox)
>         return redirect('./1') #テストのため引数を与えています
> ----------------------------------------------------------------------------------------------------------
>
> ・model.py
> ----------------------------------------------------------------------------------------------------------
> from datetime import datetime
> from turbogears.database import PackageHub
> from sqlobject import *
> from turbogears import identity
>
> hub = PackageHub("labeltest")
> __connection__ = hub
>
> class names(SQLObject):
>     namebox = UnicodeCol()
> ----------------------------------------------------------------------------------------------------------
>
> ・form.kid(のbodyタグ内)
> ----------------------------------------------------------------------------------------------------------
> <div id="main_content">
>     <div py:content="form.display(action=action, value=value, options
> = options)" />
> </div>
> ----------------------------------------------------------------------------------------------------------
>
> 画面で登録しようとすると
> TypeError: name_edit() takes at least 4 non-keyword arguments (3
> given)
> と表示されてしまいます。
> namelen は表示のみの項目なのでとくに入力チェックする必要はありません。
> こういう場合はどのようにすればエラーなく登録することができるのでしょうか?
> 良い解決方法があればご教示ください。
> よろしくお願いします。
>
>
> >
>


-- 
Takashi Matsuo
[&#x30E1;&#x30FC;&#x30EB;&#x30A2;&#x30C9;&#x30EC;&#x30B9;&#x4FDD;&#x8B77;]

--~--~---------~--~----~------------~-------~--~----~
このメッセージは、次の Google グループへの参加を申し込まれたことを確認す
るために送信されました。 Google グループ "turbogears-ja" グループ。
 このグループに投稿するには、次の宛先にメールを送信してください。 turbogears-ja@googlegroups.com
 このグループから退会するには、次へメールをお送りください。 
[&#x30E1;&#x30FC;&#x30EB;&#x30A2;&#x30C9;&#x30EC;&#x30B9;&#x4FDD;&#x8B77;]
 その他のオプションについては、次の URL からグループにアクセスしてくださ
い。 http://groups.google.co.jp/group/turbogears-ja?hl=ja
-~----------~----~----~----~------~----~------~--~---

メールによる返信