Функции импорта шаблонов гепардов - PullRequest
2 голосов
/ 06 июня 2011

Так что у меня возникли некоторые проблемы при попытке импортировать функции и запустить их внутри моих шаблонов гепардов.

Итак, у меня есть один файл, который находится по адресу /docroot/tmpl/base.html а затем другой файл /docroot/tmpl/comments.html

внутри комментариев У меня есть нечто, похожее на это

#def generateComments($commentObj):
 code for generating comments
#end def

тогда внутри base.html я хочу иметь такой синтаксис

#import docroot.tmpl.comments as comments
<div class="commentlist">
 $comments.generateComments($commentObj)
</div>

Однако, когда я запускаю этот вывод, я просто распечатываю содержимое comments.html, в том числе #def generateComments в raw txt. '

Чего мне не хватает?

1 Ответ

0 голосов
/ 09 мая 2017

Гепард компилирует шаблоны в классы Python.При импорте модуля comments модуль состоит из одного класса с именем comments.Вам необходимо явно создать экземпляр класса и вызвать его метод generateComments.Поэтому ваш код должен быть

#from docroot.tmpl import comments
<div class="commentlist">
 $comments.comments().generateComments($commentObj)
</div>

Первый comments - это модуль, comments.comments - это класс шаблона в модуле, comments.comments() - это экземпляр класса, comments.comments().generateComments($commentObj) - это вызовк его методу.Для упрощения кода немного импортируем класс:

#from docroot.tmpl.comments import comments
<div class="commentlist">
 $comments().generateComments($commentObj)
</div>
...