quixote - это старый, но все же увлекательный фреймворк - он в основном «встраивает HTML в Python» (а не наоборот, как это делают все популярные системы шаблонов).
Один простой пример из the overview:
def format_row [html] (head, value):
"<tr valign=top align=left>\n"
" <th align=left>%s</th>\n" % head
" <td>%s</td>\n" % value
"</tr>\n"
В Python собственно первый из этих строк будет строку документации, остальные будут проигнорированы, и [html]
часть будет синтаксической ошибкой. В Quixote
значение [html]
обозначает эту функцию как «PTL» (язык шаблонов Python), а не собственно Python, расширение файла для использования с модулями с такими функциями - .ptl
, но они все равно могут быть import
из Python, и эти строки выводятся ,
Я сомневаюсь, что вы хотите принять Quixote
, предпочитая современные подходы к шаблонам Python, но это делает интересное чтение, ИМХО.
Далее по аналогичным линиям находится nevow (хотя он больше ориентирован на создание XML, а не на HTML как таковой), особенно. stan, где канонический пример ...:
>>> from nevow import flat, stan
>>> html = stan.Tag('html')
>>> p = stan.Tag('p')
>>> someStan = html[ p(style='font-family: Verdana;')[ "Hello, ", "world!" ] ]
>>> flat.flatten(someStan)
'<html><p style="font-family: Verdana;">Hello, world!</p></html>'
Вид «еще круче» ... потому что вам не придется беспокоиться о закрывающих тегах правильно ;-).
В конце концов, однако, для производства работ шаблонных систем, таких как jinja2 или mako обычно предпочтительнее в эти дни - основная практическая причина быть лучше разделение логики представления (в шаблоне) из других слоев (в коде Python надлежащего), чем они предлагают, по-моему, подход «внедрить HTML/XML в Python».
Какой «простой HTML»? Какие возможности вам нужна для этой системы - замена переменных? Циклическое? Conditionals? Проверка синтаксиса? –
Как Jinja2 «сложный»?Для заполнения шаблона требуется всего несколько строк кода. Можете ли вы дать конкретное определение «сложный»? –
Мне нужно сгенерировать некоторый HTML для отображения отчета - всего лишь кучу таблиц и некоторых изображений. Это небольшой проект, и я понял все, что потребовало бы, чтобы я учился (как выглядит, на первый взгляд), большой API будет пустой тратой времени. Я использовал ElementTree, но http://stackoverflow.com/questions/3145015/multiple-text-nodes-in-pythons-elementtree-html- генерация. –