現在、プロジェクトを Pylons 1.0 から Pyramid に移行しています。
これまでのところ、私の問題は Pyramid で安らかなルートを使用する方法です。私は現在、良いスタートのように思えたので、pyramid_handlers を使用しています。私はAkhetを使用しています。
したがって、ここに私のルートの 2 つの重要な行があります。
config.add_handler("new_account", "/accounts/new", "sproci2.handlers.accounts:Accounts")
# or
config.add_handler("new_account", "/accounts/new", "sproci2.handlers.accounts:Accounts", action="new")
私の行動:
@action(name="new_account", renderer='accounts/new.mako', request_method='GET')
エラー:
TypeError: 'Accounts' object is not callable
or
ValueError: Could not convert view return value "{}" into a response Object.
アカウント...これまでのところ非常に良いので、pyramid_handlersが正常に登録されていないか、名前を適切に処理していないように見えることは簡単に理解できます... でrequest.matched_route
、私は「new_account」を持っています。
ルート定義に「action='new'」を追加すると、関数は見つかりますが、アクション定義をリッスンしません。つまり、レンダラーを見つけられず、応答オブジェクトを期待できません。パラメータはrequest_method
まだ実際には何もしないので、削除しても結果は変わりません。
要するに、@action(name="..."
機能しません。Pyramid はそれ自体で関数を見つけることができず、関数名が定義されている場合、アクション ステートメントの実行に失敗します。
私が間違っていることはわかりません。
正しいやり方。
config.add_handler("new_account", "/accounts/new", "sproci2.handlers.accounts:Accounts", action="new_account")
編集
route_name
おそらく、URL ジェネレーター関数で使用されるようになるでしょう。action は @action の実際の名前です。私が理解したように、 @action name は route_name であり、アクション名ではありませんでした。それは今より理にかなっています。