Какой модуль генератора Python HTML должен использовать в не веб-приложении? - PullRequest
3 голосов
/ 08 октября 2010

Я взламываю быстрый и грязный скрипт на python для генерации некоторых отчетов в виде статических html-файлов.

Каким будет хороший модуль для простого создания статических html-файлов вне контекста веб-приложения?

Моими целями являются простота (HTML не будет очень сложным) и простота использования (я не хочу писать много кода только для вывода некоторых HTML-тегов).

Я нашел дваальтернативы в моем первом поиске goolge:

Кроме того, я чувствую, чтоиспользование шаблонизатора было бы чрезмерным убийством, но если вы не согласны, скажите, пожалуйста, и почему.

Любые другие рекомендации?

Ответы [ 6 ]

5 голосов
/ 08 октября 2010

Может быть, вы могли бы вместо этого попробовать Уценка и конвертировать его в HTML на лету?

3 голосов
/ 08 октября 2010

Почему движок шаблонов обязательно будет излишним? Вам не нужен весь веб-фреймворк, чтобы использовать шаблонизатор (по крайней мере, для большинства шаблонизаторов). Мако , например, может использоваться автономно, просто отлично, и я часто использую его для создания HTML-файлов (отчеты из БД и тому подобное)

3 голосов
/ 08 октября 2010

Вам не обязательно нужно что-то сложное - например, вот библиотека ~ 150 строк для функциональной генерации HTML:

http://github.com/Yelp/PushmasterApp/blob/master/pushmaster/taglib.py

(Полное раскрытие, я работаю с человеком, который первоначально написал эту версию, и я также использую ее сам.)

2 голосов
/ 08 октября 2010

ElementTree может создавать HTML с некоторыми ограничениями. Я бы написал так:

from xml.etree.ElementTree import ElementTree, Element, SubElement
import sys 

html = Element('html')

head = SubElement(html, 'head')
style = SubElement(head, 'link')
style.attrib = {'rel': 'stylesheet', 'href': 'style.css', 'type': 'text/css'}
body = SubElement(html, 'body')

para = SubElement(body, 'p')
para.text = 'Lorem ipsum sit amet'

doc = ElementTree(html)
doc.write(sys.stdout)

В случае умеренно сложного html я бы использовал какой-нибудь шаблонизатор: Jinja2, Mako, Cheetah, просто назвать несколько.

2 голосов
/ 08 октября 2010

Если у вас есть только несколько простых статических файлов HTML.Тогда почему бы не использовать строковые шаблоны вроде этого.

import string

TEMPLATE_FORMAT = """
<html>
<head><title>Trial</title></head>
<body>
    <div class="myclass">$my_div_data</div>
</body>
"""
my_div_data = "some_data_to_display_in_HTML"
TEMPLATE    = string.Template(TEMPLATE_FORMAT)
html_data   = TEMPLATE.safe_substitute(my_div_data)
open("out.html", "w").write(html_data)

Попробуйте, если у вас нет слишком больших файлов HTML для генерации.Сохраняет вас на обучение, которое вам нужно сделать, если вы решите использовать библиотеки.

1 голос
/ 08 октября 2010

Я рекомендую взглянуть на Шпамл

...