Ознакомьтесь с документацией для встроенной системы шаблонов web.py . Есть также примеры поваренной книги для подключения в сторонних шаблонных движках , таких как Мако , Гепард и Jinja2 .
Чтобы преобразовать данные, отображаемые в Javascript, вы можете использовать один из модулей JSON для Python: стандартный модуль json (2.6 +) , simplejson или питон-cjson .
Вот краткий пример использования модуля web.template
для рендеринга простой HTML-страницы с результатами некоторых запросов к базе данных.
Обновлено Метод select
не возвращает имена столбцов как отдельный атрибут. Он возвращает итератор, где каждая строка является словарем. Поэтому, чтобы получить заголовки столбцов, вам нужно взять их из первого ряда. Я обновил пример, чтобы показать, как это можно сделать:
import web
TEMPLATE = '''$def with (rows, cols)
<html><body>
<h2>Results:</h2>
<table>
<tr>
$for col in cols:
<th>$col</th>
</tr>
$for row in rows:
<tr>
$for col in cols:
<td>$row[col]</td>
</tr>
</table></body></html>'''
class query:
def GET(self, arg):
res = db.select('player', what='id,name')
cols = []
rows = res.list()
if rows:
cols = rows[0].keys()
return tmpl(rows, cols)
db = web.database(dbn='mysql')
tmpl = web.template.Template(TEMPLATE)
urls = ('/(.*)', 'query')
if __name__ == '__main__':
app = web.application(urls, globals())
app.run()
Вывод (свернут для экономии места):
<html><body>
<h2>Results:</h2>
<table>
<tr><th>id</th><th>name</th></tr>
<tr><td>1</td> <td>Joe</td></tr>
<tr><td>2</td><td>Gary</td></tr>
<tr> <td>3</td><td>Fred</td></tr>
</table></body></html>