Поначалу я загляделся на это фреймворк, глядя на его примеры появляется ложное чувство простоты и понятности, например:
определяем 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://old2.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 года - нужно только самим разработчикам
тьфу, две недели потратил зря
 
                                    
                                
Комментариев 0