2010-11-05 110 views
1

問題的小版本:「我需要一個用於python或程序(pref。for Linux)的lib,它接收圖像的url列表併爲我提供表格的hmtl(可能易於配置(行和外觀))HTML生成器,圖庫生成器或模板?

長版的問題的: 我與網址的對圖像的列表數組,我想打一個(我不知道這是不是最好的做法,但我認爲這是最簡單的) 我不在乎大拇指是否與大大小一樣(只是被迫變小)而且我不需要將圖像複製到任何地方。我使用下面的代碼(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 

(我知道代碼是陰暗的,它跳過最後一個,如果它是一個奇數......但它的咖啡因刺激碼我只需要把它做完......沒什麼我爲之驕傲的:) 我知道必須有更好的方法(而且漂亮......'這看起來真的很醜陋),並且我可以指定數字的方式列和其他選項。

我無法找到我的案例(我測試的所有文件都複製到新目錄)的圖庫生成器。 我應該學習模板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

我認爲實現這一目標將是使用模板語言像MakoCheetahJinja最簡單的方法。就我個人而言,我會選擇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 ......但是你的例子說服了我:) – 2010-11-05 19:55:38

0

花幾分鐘時間來學習模板引擎像Jinja2。它確實付出了代價,因爲您可以專注於代碼並將佈局留給web設計師。