2011-04-08 3 views
2

템플릿의 "for"함수에있는 객체를 기반으로 파이썬에서 일부 데이터를 추출 할 수 있기를 원합니다. 나는 아래의 예에서 django 템플릿의 "for"함수에있는 객체에서 python을 사용하는 방법은 무엇입니까?

는 템플릿 시스템 외부 예를으로 뭔가를하고 싶은, 그래서 템플릿 언어에 의해 제한 될 수 실 거예요, 대신 파이썬 사용할 수 있습니다 : 나는 수도 알고

#django_template.html 

{% for example in queryset %} 
    #do something to example with python 
{% endfor %} 

을 템플릿 태그를 사용하여 가능할 수 있지만 더 쉬운 방법이 없는지 궁금해하고있었습니다. 이것이 가능한가?

편집 : 내가보기에이 작업을 수행 할 수 있어요 :

for example in queryset: 
    #Extract data based on example 

그러나 문제는 내가 사용할 수있다 "{%의 검색어 %의 예를 들면}"템플릿에서 다음 데이터를 얻을 수 보기에 각 특정 예 :을 만들었습니다.

+0

템플릿 태그는이 작업을 수행하기에 매우 효과적입니다. 복잡한 태그를 원하면 templatetag-sugar와 같은 헬퍼를 사용할 수 있습니다. 어느 쪽이든 옵션을 '예제'개체 자체에 메서드를 추가하여 템플릿에서 호출 할 수 있습니다. – Jerzyk

+0

어쩌면 템플릿 태그 방법을 따라 가야 할 것입니다 :) 그게 아마도 주위의 유일한 방법 일 것입니다. – tmpethick

+0

좀 더 구체적으로 설명 할 수 있습니까? 당신이 달성하고자하는 간단한 예가 무엇입니까? –

답변

2

장고가 작동하는 방식이 아닙니다. 템플릿 언어의 "외부"에서 뭔가를하고 싶다면 뷰 기능에서 수행하십시오.

템플릿 언어는 의도적으로 만 표시 할 수 있습니다.

처리 없음.

(당신은, 제발 규칙을 속성 및 기술자와 조금 꾸며 낼하지만,하지 않습니다. 그것은 성능 유적과 우리의 나머지를 혼란. 만보기 기능에서 처리를 수행 할 수 있습니다.)

+0

나는보기에서 그것을해야한다는 것을 안다. 문제는 뷰에서 한 번에 하나씩 쿼리 세트의 모든 부분을 공중제비로 돌릴 수 있는지를 모르고 템플릿을 통해 실행할 수 있다는 것입니다. – tmpethick

+0

@tmpethick : "보기에 한 번에 하나씩 쿼리 세트의 모든 부분을 공중제비로 돌릴 수있는 방법을 모르겠다. 그런 다음 템플릿을 통해 실행할 수 있습니다."첫째, 그것은 사소한 일입니다. 그것이 생성기 기능을위한 것입니다. 더 중요한 것은, 그것이 ** 진짜 ** 문제라면, 그 질문을 별도의 질문으로하십시오. 당신에 관한 세부 사항을 제공하십시오. –

0

'하는 경우 example '은 사용자가 제어하는 ​​클래스의 인스턴스이므로 템플릿 내에서 임의의 클래스 메서드를 호출 할 수 있으므로 특별한 예쁜 인쇄 메서드를 사용하려는 것과 같은 작업이있는 경우 {{example.myfunction}}을 삽입하여이 메서드를 호출 할 수 있습니다.

그 외에도 템플릿 자체에 파이썬 코드를 작성할 수 없으므로 작성한 질문에 대한 대답은 아니오입니다. 그러나 사용자 정의 태그를 사용하여 템플릿 언어에 대한 Python 확장을 구현할 수 있다고 올바르게 설명합니다.

'데이터 계산'을 사용하는 것은 다소 무서운 일입니다. 수학 또는 I/O와 같은 원격지 작업은 템플릿에서 수행하지 않아야합니다. 이러한 계산을 사용자의 관점에서 수행하십시오.이 분리는 의도적으로 설계된 것입니다.

+0

필자는 템플릿 내에 파이썬을 작성할 수 있다고 생각하지 않았습니다. 문제는보기에서 "for"를 사용하고 각 인스턴스에 대해 작업을 수행하는 것이 쉽지만 템플릿에서 "for"를 사용하고 다른 유형의 데이터를 표시하는 것이 어렵다는 것입니다 전망.당신이 이해한다면 잘 모릅니다 - 설명하기가 조금 어렵습니다 :) – tmpethick

관련 문제