2009-10-11 74 views
2

我使用rows.xml()來生成html輸出。我想知道如何添加HTML代碼到這個生成的html頁面如:「新增標誌,鏈接CSS文件,..等」web2py - 如何注入html

rows=db(db.member.membership_id==request.args[0]).select(db.member.membership_id ,db.member.first_name,db.member.middle_name ,db.member.last_name) return rows.xml()

回答

2

有您可以使用許多HTML輔助,例如:

html_code = A('<click>', rows.xml(), _href='http://mylink') 
html_code = B('Results:', rows.xml(), _class='results', _id=1) 
html_page = HTML(BODY(B('Results:', rows.xml(), _class='results', _id=1))) 

等。

你甚至可以自動創建一個完整的表:

table = SQLTABLE(rows, orderby=True, _width="100%") 

,然後從中挑選它拆開插入鏈接或修改其內容。

這是非常強大的,通常你不必費心編寫自己的實際HTML。 Here is the cheatsheet,或者您可以直接在website documentation上查詢。


編輯:只是爲了確保,你實際上並不需要生成整個HTML頁面,很容易讓web2py的插入您在具有相同的名稱控制器模板(響應或力

簡而言之,如果你正在實現函數index,你可以返回一個字符串(整個頁面的HTML,這似乎是是你要去的),還是使用模板的詞典。

在第一種情況下,只需編寫你的函數是這樣的:

def index(): 
    # ... code to extract the rows 
    return HTML(BODY(B('Results:', rows.xml(), _class='results', _id=1))).xml() 

否則,如果插入你的函數的response.view=...寫意見HTML模板/ 控制器 /index.html(或其他文件,以重複使用相同的模板),這可能是這樣的:

<html><head></head> 
    <body> 
    {{=message}} 
    </body> 
</html> 

,並返回一個字典:

def index(): 
    # ... code to extract the rows 
    html = B('Results:', rows.xml(), _class='results', _id=1) 
    return dict(message=html) 
+0

感謝您的幫助。 向函數中添加前面的行之後在函數的返回處寫什麼「而不是返回rows.xml()以顯示html頁面」 – Neveen 2009-10-11 11:11:11

+0

不客氣。我剛剛爲整個頁面添加了一些內容(這是原始問題),請檢查Edit:remark。 – RedGlyph 2009-10-11 11:15:25

+0

我不明白如何 > response.view ='template.html'可以幫助我解決我的問題。我檢查了文件,我不明白。 謝謝 – Neveen 2009-10-11 11:52:38

0

只是在前面加上/追加到字符串rows.xml()回報:

html = '<html><head>...</head><body>' + rows.xml() + '</body></html>' 
+0

我寫這行: 數據= 「 」+ rows.xml +「」 和, 它顯示以下錯誤: '類型錯誤:不能連接 'STR' 和 'instancemethod' 對象' – Neveen 2009-10-11 10:49:58

+0

糟糕...我忘了「() 「後xml。固定。 – 2009-10-13 08:21:54