2010-12-11 2 views
1

내 장고 프로젝트에 사용자 정의 템플릿 태그와 사용자 정의 템플릿 필터가 포함 된 파이썬 파일이 있습니다.내 맞춤 Django 템플릿 필터는 "잘못된 필터"오류가 발생하지만 다른 필터는 사용하지 않습니다.

내 맞춤 태그는 template.loader.get_template()을 사용하여 다른 템플릿 파일을로드합니다. 로드 된 템플릿에 내 사용자 정의 필터를 추가 할 때까지 이것은 효과가있었습니다.

이제 장고 "잘못된 필터"TemplateSyntaxError 예외가 발생합니다. 호출 스택을 보면 Django는 템플릿 필터를로드 할 수 없습니다.

여기가 이상한 곳입니다. 다른 템플릿의 사용자 정의 필터를 사용할 수 있습니다. 내 사용자 정의 태그로로드 된 템플릿 내에서 다른 필터를 사용할 수 있습니다. 하지만 내 자신의 사용자 정의 태그 내 자신의 필터를 사용할 수 없습니다.

명백한 원인은 내 사용자 지정 태그/필터 파일을 내 서식 파일 HTML에로드하는 것이 아니라 올바르게로드하는 것입니다. (로드하지 않을 때 "잘못된 블록 태그"와 같은 다른 오류가 발생합니다)

저는 Python 2.7에서 Django 1.2.3을 실행하고 있습니다.

[BTW, 마침내 답을 직접 찾았지만 몇 시간이 걸렸으며 어디에서나 stackoverflow 또는 google에서 답을 찾을 수 없었기 때문에 다른 사람들이 이기기 위해 내 자신의 질문에 답변 할 것입니다. 내가 한 것처럼 많은 시간을 낭비해야한다.]

답변

7

대답은 간단하다 : 커스텀 태그와 커스텀 필터를 두개의 파이썬 파일로 나누면 작동 할 것이다.

문제가있는 것 같습니다. 사용자 정의 태그가 template.loader.get_template()을 사용하여 다른 템플릿을로드하고 있습니다. 해당 템플릿 파일에는 부모 맞춤 태그가 정의 된 동일한 파일을로드하려고 시도하는 {% load %} 태그가 포함되어 있습니다. 어떤 이유로, 이것은 작동하지 않습니다. 아마도 무한 루프가 발생하거나 장고가 이미로드되어 있다고 가정하기 때문일 수 있습니다.

필자는 사용자 정의 태그를 필터 내부에로드하거나 다른 태그 내부의 태그를로드하려고 시도하지 않았지만 동일한 문제가 발생했는지 확인하기 위해 시도하지 않았지만 그렇게하면 수정 사항이 동일하게 나타납니다. 원하는 경우 template.loader.get_template()을 사용하여 사용자 정의 태그 또는 필터에 대한 호출을 포함하는 템플릿을로드하려면 template.loader.get_template()을 호출하는 파일이 포함 된 태그/파일러를 정의하는 파일과 다른 파일이어야합니다.

관련 문제