Поначалу я загляделся на это фреймворк, глядя на его примеры появляется ложное чувство простоты и понятности, например:
определяем urls
urls = ( '/', 'index', '/blog/.*?-?(\d+).html', 'blog' )
пишем класс обработчик
class index:
def GET(self):
posts = db.select(tables='message', limit=5, order = "id desc", _test = False)
return render.blog( posts )
и делаем шаблон
$def with (posts)
$for m in posts:
< h1 ><a href="/blog/$m.id">#</a> $m.TITLE</ h1 >
< div class="ptext">$:m.MESSAGE.replace('src="/upload','src="http://breys.ru/upload')</ div >
вроде всё замечательно, просто и понятно. Но если добавить такие простые и ясные вещи .html в конец ссылки, а так же включить в урл тег страницы то вырастает такая уйня
$if len(m.short_name):
< h1><a href="/blog/$(m.short_name.replace(' ','_'))-$(m.id).html">#</a> $m.TITLE</h1 >
$else:
< h1><a href="/blog/$(m.id).html">#</a> $m.TITLE</h1 >
А если копнуть дальше, например довольно редко когда на странице всего один запрос, то начинает дублироваться код аля
tags = db.select(tables='message', what="short_name, count(id) as cnt", where="id_domen=@id_domen and short_name!=''", group = "short_name", order = "cnt desc" , _test = False)
И шаблон начинает пухнуть как на дрожах, так как приходится учитывать особенности питона и грёбанного шаблонизатор
$def with (posts, tags=None, )
А если запросы посложнее чем, select what from [tables] where group order limit offset то всё скатывается к банальному db.query("set @id_domen = (бла бла бла)")
увольте но писать вот такое говно
$def tr(values):
< tr>
$for v in values:
< td>$v</td >
</tr >
$def table(rows):
< table>
$for row in rows:
$:row
</table >
не для меня, а для каких то эксгибионистов
чем сложнее задача, тем сложнее её сделать на этом фреймворке, а учитывая качество документации и примеров за 2001 года - нужно только самим разработчикам
тьфу, две недели потратил зря