#python #templates #cheetah
#python #шаблоны #cheetah
Вопрос:
Итак, у меня возникли некоторые проблемы при попытке импортировать функции и запустить их внутри моих шаблонов cheetah.
Итак, у меня есть один файл, который находится в /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 generateComments в необработанном текстовом формате.’
Чего я не понимаю?
Ответ №1:
Cheetah компилирует шаблоны в классы 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>