функции импорта шаблонов cheetah

#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>