HTML生成器,图库生成器还是模板?

时间:2010-11-05 13:43:53

标签: python html templating-engine

问题的小版本:“我需要一个用于python或程序的lib(用于Linux的pref。),它接收图像的URL列表,并为我提供表格的hmtl(可能很容易)配置(行和外观))

问题的长篇: 我有一个列表的列表用于图片,我想制作一个(我不知道这是不是最佳做法,但我认为这是最简单的)。 我不在乎拇指是否与大文件相同(只是被迫小)。而且我不需要将图像复制到任何地方。

我使用以下代码(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

(我知道代码是阴暗的,它跳过最后一个,如果它是一个奇数...但它是咖啡因推动的代码,我只需要完成它...没有我为此感到自豪:) 我知道必须有一个更好的方法(更漂亮......'这看起来真的很难看),以及一种我可以指定列数和其他选项的方法。

我无法为我的案例找到一个库生成器(我测试的所有文件都将文件复制到新目录)。 我应该学习模板语吗?值得吗?

或者我应该使用 HTML生成器

或者我应该研究更好的HTML编码?

如果遇到问题,你会怎么做?

这是我提出的解决方案(在从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)

2 个答案:

答案 0 :(得分:4)

我认为实现此目标的最简单方法是使用MakoCheetahJinja等模板语言。我个人选择Jinja,因为它与Django模板语言非常相似,但它们都非常强大。

使用Jinja,你想要的一个非常简单的例子如下:

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更具可读性。

答案 1 :(得分:0)

花几分钟时间学习像Jinja2这样的模板引擎。它真的很值得,因为你可以专注于代码并将布局留给webdesigners。