Генерация HTML в Python - PullRequest
0 голосов
/ 30 июня 2010

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

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

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

Ответы [ 4 ]

2 голосов
/ 30 июня 2010

quixote - это устаревшая, но все еще увлекательная среда - она ​​в основном "встраивает HTML в Python" (а не наоборот, как это делают все популярные системы шаблонов).

Oneпростой пример из обзор :

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 Template Language), а не как собственно Python, расширение файла для модулей с такими функциями - .ptl, но они все еще могут быть imported из 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».

1 голос
/ 30 июня 2010

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

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

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

1 голос
/ 30 июня 2010

Посмотрите на модуль разметки: http://markup.sourceforge.net/

Редактировать: Вот еще один модуль, который выглядит очень похоже: http://www.decalage.info/en/python/html

0 голосов
/ 30 июня 2010

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

...