2011-02-10 2 views
3
{% gen_aws "hello" %} 

,이 작업을 수행합니다Django의 템플릿 태그가 어떻게 작동하지 않습니까? 내 파일에서

#I want to add "goodbye" to every word passed to this tag. 
@register.tag(name="gen_aws") 
def gen_aws(s): 
    return s + "goodbye" 

평 파일이 괜찮아 ... 난 괜찮아 모든 것을 포함하고 있습니다. 거기에 다른 템플릿 "필터"가 잘 작동합니다. 하지만 그 파일에이 파일을 추가했는데이 템플릿 태그가 작동하지 않습니다.

답변

9

"작동하지 않음"에 대한 설명이 정확하지 않습니다 (정확하게 존재하지 않음). 그러나 태그를 찾을 수 없기 때문에 오류가 발생했다고 생각합니다.

documentation에는 "mytags"와 같은 하위 모듈과 함께 앱에 "templatetags"모듈이 있어야한다고 분명히 명시되어 있습니다. 그런 다음 사용하려는 각 템플릿에 이러한 태그를 포함해야합니다. 당신은 {% load mytags %}으로 할 수 있습니다.

"mytags"모듈에는 "gen_aws"태그가 있습니다.

편집 : 오류 정상 태그는 매우 사용자 정의 방식으로 자신의 매개 변수를 구문 분석 할 수 있기 때문에 발생합니다 "gen_aws()는 정확히 1 인수 (2 주어진) 걸립니다." 따라서 그들은 "파서"와 "토큰"이라는 인수를 얻습니다. 귀하의 경우에는 simple tag이라면 충분합니다. 그러면 Django가 자동으로 매개 변수를 파싱하여 파이썬 값으로 전달합니다. 따라서 @register.tag@register.simple_tag으로 바꿉니다.

+0

내 태그를로드했습니다. – TIMEX

+0

@TIMEX : 그렇다면 * 정확히 무엇이 문제입니까? – AndiDog

+0

gen_aws() 주어진 정확히 1 인수 (주어진 2) – TIMEX

4

"no attribute 'must_be_first'" 오류의 또 다른 가능한 원인은 수업 중에 django.template.Node에서 상속하는 것을 잊었습니다. (이 단어가 Google의 유일한 결과이기 때문에 다음 사람에게 몇 분을 절약하기 위해 여기에 추가 할 것입니다.)

관련 문제