2012-07-25 5 views
0

Zope과 Plone을 처음 사용했습니다. index_html 페이지에 파이썬 코드를 작성하려고합니다. 나는 유형 사람의 객체 목록을 가지고 있는데, 이제 그것들을 재정렬하려고합니다. 그럼, 내가 전에 한 것은이었다 zope 페이지 템플릿에서 파이썬 코드를 작성하는 방법

<ul tal:define="persons python: context.portal_catalog(portal_type='Person');"> 
<tal:listing repeat="p persons"> 

지금 나는 <tal:listing 전에이 파이썬 코드를 가지고 ...
<?python 
    order=[0,2,1] 
    persons = [persons[i] for i in order] 
?> 

그러나

어떻게 든 사람의 순서가 동일하게 유지됩니다. 또한, 나는 또한보기에 파이썬 코드를 작성하는이 방법을 좋아하지 않는다. 이 코드를 사용하여 목록의 순서를 변경할 수있는 방법이 있습니까?

+0

''구문은 Zope 페이지 템플릿에서 지원되지 않습니다. 그 구문을 어디서 발견 했습니까? –

+0

www.mail-archive.com/[email protected]/msg00046.html에서 찾았습니다. 나는 사람을 파이썬 코드로 new_persons로 변경하고 에 액세스하려고하면이 new_person에 대해 알지 못한다는 것을 깨달았다. 나는이 파이썬 코드를 어딘가에 써야한다고 생각한다. 현재 나는 브라우저 템플릿에 그것을 쓰고있다! 이 코드는 어디서 작성해야하며 템플릿의이 코드에 어떻게 액세스합니까? –

+1

아, ZPT가 할 수있는 것을 설명하는 것이 아닌, * 기능을 묻는 * 사람입니다. :-) –

답변

4

Zope 페이지 템플릿은 <? ?> 구문을 전혀 지원하지 않습니다.

그러나, 당신은 단지 벌금 tal:repeat에 파이썬 목록 전체를 반복 할 수 있습니다

<ul tal:define="persons python: context.portal_catalog(portal_type='Person');"> 
    <tal:listing repeat="i python:[0, 2, 1]"> 
     <li tal:define="p python:persons[i]" tal:content="p/name">Person name</li> 
    </tal:listing> 
</ul> 

난 당신이 portal_catalog이 (가) sort_on 매개 변수를 사용하는 대신 정렬 할 수 있도록하려면, 그러나 의심이 (참조 Plone KB article on the catalog는) :

<ul tal:define="persons python: context.portal_catalog(portal_type='Person', sort_on='sortable_title');"> 
    <tal:listing repeat="p persons"> 
     <li tal:content="p/name">Person name</li> 
    </tal:listing> 
</ul> 

당신은 아무것도 더 복잡하고 싶은 경우에, 당신을 위해 마사지 목록을 할 수있는 browser view를 사용합니다.

+0

답변 해 주셔서 감사합니다! –

+0

그러나보기에서 논리를 처리하는 것이 좋습니다. Person.py 클래스에서 "sortable_title"은 어디에 정의합니까? –

+0

로직을 뷰에 푸시하는 것이 더 좋지만, 소량의 순서 지정 등이 템플릿에서 처리 될 수 있습니다. –