2017-01-04 1 views
2

필자는 Pyramid 1.6+에서 "컨텍스트"술어의 유용성에 대해 머리를 쓰려고합니다. 단지 예를 들어 URLDispatch를 사용하는 경우,이 같은 장식 호출 뷰가있을 수 있습니다 :피라미드에서 URLDispatch를 사용할 때 문맥 술어가 유용할까요?

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

과의 내가 정의 된 경로 공장, 다음과 같이 정의 된 경로가 있다고 가정 해 봅시다 :

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

무시 허가 피라미드는 사용자가 employee_edit 경로를 탐색 할 때 위의 뷰를 호출 가능하도록 허용 할 수 있습니다. 벌금.

하지만 내 질문은 : "context = Employee"는 위의 예제에서 내 @view_config에 어떤 값을 가지고 있습니까? ... 나는 사람들의 코드에서 이것을 보아 왔습니다.

상황을 이해한다면 기본적으로 "이보기는 컨텍스트 개체에 context =에 지정된 개체와 동일한 유형이 포함 된 경우에만 사용할 수 있습니다."라는 의미입니다. 즉, 위의 예제에서 Employee 객체가 포함되어 있지 않으면이 뷰를 호출하지 마십시오.

하지만 컨텍스트에 Employee 객체가 어떻게 포함되어 있지 않습니까? 즉, 위의 예제에서 하나의 경로 만 지정하면 하나의 경로 만 지정할 수 있고 그 중 하나의 경로는 컨텍스트에서 Employee 개체를 내보내도록 코딩되어 있다고 가정합니다. 다른 곳에서 볼 수있는 것처럼 보이지 않습니다. 노선, 그렇지?

답변

2

주로 2 가지 시나리오에 관련이 : 공장이 컨텍스트의 다른 유형을 반환 할 수 있습니다

  1. 경우에, 당신이 그것에 일치 할 수 있습니다.

  2. 경로가 use_global_views=True이고보기에 route_name=이없는 경우보기는 명시된 경로가 아닌 컨텍스트에만 연결됩니다.

그렇지 않은 경우, 예에서와 같이 팩토리가 항상 해당 유형의 컨텍스트를 반환한다고 가정 할 때이 예에서는 중복됩니다.

+1

피라미드의 영리함과 유연성은 절대로 놀라지 않습니다 :) –

관련 문제