2010-06-30 3 views
0

Какой простой способ быстро создать простой HTML-код в Python? Все, что я нашел до сих пор, - сложные системы шаблонов или классы для генерации HTML с API, которые кажутся намного более тяжелыми, чем то, что мне нужно.HTML-генерация в Python

Я мог бы сделать это сам, склеивая струны вместе, но я думал, что может быть библиотека, которая могла бы сэкономить мне немного времени.

edit- Я решил более внимательно ознакомиться с системой шаблонов Jinja2. Похоже, что это может быть полезно в какой-то момент в будущем и не похоже, что потребуется столько времени, чтобы понять, как я думал.

+0

Какой «простой HTML»? Какие возможности вам нужна для этой системы - замена переменных? Циклическое? Conditionals? Проверка синтаксиса? –

+1

Как Jinja2 «сложный»?Для заполнения шаблона требуется всего несколько строк кода. Можете ли вы дать конкретное определение «сложный»? –

+0

Мне нужно сгенерировать некоторый HTML для отображения отчета - всего лишь кучу таблиц и некоторых изображений. Это небольшой проект, и я понял все, что потребовало бы, чтобы я учился (как выглядит, на первый взгляд), большой API будет пустой тратой времени. Я использовал ElementTree, но http://stackoverflow.com/questions/3145015/multiple-text-nodes-in-pythons-elementtree-html- генерация. –

ответ

2

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».

+0

Спасибо за предложения. nevow выглядит многообещающим. –

0

Если вы ищете основные и скелетные то древний HTMLgen будет делать. В противном случае используйте механизм шаблонов.

+0

Ничего себе, это старый. Но спасибо за предложение, я проверю это. –

1

Строка Python.Template может делать то, что вы хотите. И он встроен.

http://docs.python.org/library/string.html#template-strings

Я не могу понять «API-интерфейсы, которые кажутся гораздо тяжелее» без дальнейшего определения или примеры.

Смежные вопросы