2017-01-04 6 views
2

私はピラミッド1.6+の "文脈"述語の有用性について私の頭を覆そうとしています。唯一例えばURLDispatchを使用しているとき、私はこのように装飾された呼び出し可能なビューを持っているかもしれません:PyramidでURLDispatchを使用する場合、コンテキスト述語はこれまで有用ですか?

@view_config(route_name="employee_edit", context=Employee) 
... 

をとの私は定義されたルートの工場で、次のように定義されたルートを持っているとしましょう:

config.add_route("employee_edit","/employee/edit/{id}", factory=Employee) 

無視許可Pyramidは、ユーザーがemployee_editルートを参照するときに、おそらく上記のビューを呼び出し可能にすることができます。ファイン。

しかし、私の質問は、 "context = Employee"はどのような値ですか?私の@view_config上の例では?..私はこれを人のコードで見てきました。

私が物事を理解していれば、context =という意味は、 "このビューは、コンテキストオブジェクトにcontext =で指定されたオブジェクトと同じ型が含まれている場合にのみ使用できます。つまり、上記の例では、Employeeオブジェクトが含まれていない限り、このビューを呼び出さないでください。

しかし、どのようにコンテキストにEmployeeオブジェクトが含まれていない可能性がありますか?言い換えれば、上記の私の例では、私は1つのルートを指定するビューを1つしか持たず、その1つのルートがコンテキスト内でEmployeeオブジェクトを放出するようにハードコードされていると仮定しています。ルート、それはできますか?

答えて

2

これは主に2のシナリオに関連します:工場出荷時は、コンテキストの異なる種類を返すことがあり

  1. 場合、あなたはそれに一致することをお勧めします。

  2. ルートにuse_global_views=Trueがあり、ビューにroute_name=が含まれていない場合、ビューはコンテキストにのみ結合され、明示的なルートには結合されません。

そうでない場合は、例のように、工場が常にそのタイプのコンテキストを返すと仮定すると、それは冗長です。

+1

ピラミッドの巧みさと柔軟性は決して驚くことではありません:) –

関連する問題