2010-11-05 3 views
1

МАЛЕНЬКАЯ ВЕРСИЯ ВОПРОСА: «Мне нужна библиотека для python или программы (для Linux), которая получает список URL-адресов для изображений и дает мне hmtl для таблицы (может быть, легко настроить (строки и посмотреть))HTML-генератор, генератор галереи или шаблоны?

LONG VERSION ВОПРОСА: у меня есть и массив с список URL, для изображений, и я хочу сделать таблицу (я не знаю, если это лучшая практика , но я думаю, что это самый простой). Мне все равно, если большие пальцы - это тот же самый файл, что и большой (просто вынужден быть маленьким). И мне не нужно копировать изображения в любую точку ,

Я использую следующий код (d = ["http: //.....jpg", "http: //.....jpg", "http: //.....jpg" »,„HTTP: //.....jpg“]):

def stupidtable(d): 
    d = list(set(d)) 
    antes=' <tr> <td><a href="' 
    dp11='"><img src="' 
    dp12= '" width="100%" /></a></td> <td><a href="' 
    dp21= '"><img src="' 
    dp22='" width="100%" /></a></td>' 
    bb=['<table border="0"> '] 
    ii=len(d) 
    i=0 
    while i<ii-1: 
     bb.append(antes) 
     bb.append(d[i]) 
     bb.append(dp11) 
     bb.append(d[i]) 
     bb.append(dp12) 
     bb.append(d[i+1])  
     bb.append(dp21) 
     bb.append(d[i+1]) 
     bb.append(dp22) 
     i=i+2 
    return bb 

(я знаю, что код является теневым и он пропускает последний, если это нечетное число ... но это кофеин подпитывается код и мне просто нужно было сделать это ... ничего не горжусь :) Я знаю, что должен быть лучший способ (и красивее .. cus это выглядит очень уродливо), и способ, которым я могу указать номер столбцов и других параметров.

Не удалось найти генератор галереи для моего случая (все, что я протестировал, скопировал файлы в новый каталог). Должен ли я изучать templating lang? Стоит ли оно того?

Или Должен ли я использовать генератор HTML ?

Или я должен лучше изучить кодировку HTML?

Что бы вы сделали, если у вас были проблемы?

Это решение, которое я придумал (после того, как adpting код с любезного г-MatToufoutu):

from jinja2 import Template 

my_template = Template(""" 
<html> 
<style type="text/css"> 
    img {border: none;} 
</style> 
<body> 
<table border="0" cellpadding="0" and cellspacing="0"> 
<tr> 
{% for url in urls %} 
<td><a href="{{ url }}"><img width="100%" src="{{ url }}"/></td> 
{% if loop.index is divisibleby cols %} 
</tr><tr> 
{% endif %} 
{% endfor %} 
</tr> 
</table> 
""") 

cols=3 
urls =["./a.jpg","./a.jpg","./a.jpg","./a.jpg","./a.jpg","./a.jpg","./a.jpg"] 
html = my_template.render(cols=cols,urls=urls) 

ответ

4

Я думаю, что самый простой способ достичь этого - использовать язык шаблонов, например Mako, Cheetah или Jinja. Лично я бы выбрал Jinja, потому что он очень похож на язык шаблонов Django, но все они очень мощные.

Очень простой пример того, что вы хотите, с помощью дзиндзя, будет выглядеть следующим образом:

from jinja2 import Template 

my_template = Template(""" 
<html> 
<body> 
<table border="0"> 
<tr> 
{% for url in urls %} 
<td><a href="{{ url }}">{{ url }}</td> 
{% endfor %} 
</tr> 
</table> 
""") 

urls = ["http://.....jpg","http://.....jpg","http://.....jpg","http://.....jpg"] 
rendered_html = my_template.render(urls=urls) 

Какой путь более читабельным, чем построение HTML вручную, как вы делали.

+0

Я попробую jinja2 сегодня вечером ... Но ваш пример убедил меня :) –

0

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

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