Создание HTML в Python - PullRequest
       27

Создание HTML в Python

36 голосов
/ 20 февраля 2010

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

Я действительно не думаю, что запись в файл вручную - лучший способ, и код может быть очень длинным. Так есть ли лучший способ сделать это, возможно, для конкретного HTML?

Ответы [ 4 ]

37 голосов
/ 29 мая 2014

Dominate - это библиотека Python для создания HTML-документов и фрагментов непосредственно в коде без использования шаблонов. Вы можете создать простую галерею изображений с чем-то вроде этого:

import glob
from dominate import document
from dominate.tags import *

photos = glob.glob('photos/*.jpg')

with document(title='Photos') as doc:
    h1('Photos')
    for path in photos:
        div(img(src=path), _class='photo')


with open('gallery.html', 'w') as f:
    f.write(doc.render())

Выход:

<!DOCTYPE html>
<html>
  <head>
    <title>Photos</title>
  </head>
  <body>
    <h1>Photos</h1>
    <div class="photo">
      <img src="photos/IMG_5115.jpg">
    </div>
    <div class="photo">
      <img src="photos/IMG_5117.jpg">
    </div>
  </body>
</html>

Отказ от ответственности: я автор доминирования

11 голосов
/ 20 февраля 2010

Думаю, если я вас правильно понимаю, вы можете увидеть здесь, "Templating in Python" .

11 голосов
/ 20 февраля 2010

Используйте шаблонизатор, такой как Genshi или Jinja2 .

1 голос
/ 20 февраля 2010

Шаблонирование, как предлагается в других ответах, вероятно, является лучшим ответом (я написал ранний, причудливый шаблонный модуль под названием yaptu , но современные зрелые модули, как предлагается в других ответах, вероятно, сделают вас счастливее; - ).

Однако, хотя с тех пор, как я последний раз использовал его, прошло много времени, я с любовью вспоминаю подход Quixote , который примерно соответствует «обратному шаблонизированию» (встраивание генерации HTML в Python, а не наоборот) шаблонизация). Может, тебе стоит взглянуть и посмотреть, понравится ли тебе больше; -).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...