LINUX.ORG.RU

Вышел web.py 0.3

 , ,


0

0

6 декабря вышла новая версия 0.3 легкого веб-фреймворка web.py, а уже 10 декабря версия 0.31. Список изменений:

  • print заменен на return, что привело к несовместимости с версией 0.22
  • application framework изменен на новый.
  • модульная система работы с базами данных (несовместимая со старой)
  • новый отладочный режим
  • улучшена поддержка unicode
  • переписан код для работы с шаблонами
  • поддержка сессий
  • поддержка openid
  • совместимость с python 2.6
  • и другие изменения, о которых можно узнать по ссылке к новости.

web.py написан на языке Python и используется рядом крупных компаний, в числе которых watchdog.net, yandex.ru и многие другие, о которых можно прочитать на сайте http://webpy.org. К достоинствам данного фреймворка можно отнести простоту обучения, гибкость и удобную систему привязки URL к обработчикам.

>>> Подробности

★★

Проверено: Shaman007 ()
Ответ на: комментарий от Joe_Bishop

Спокойно, пациент, все хорошо.

Что ви понимаете под рекурсией и функциями применительно к шаблонизатору? Вы только не нервничайте :)

anonymous
()
Ответ на: комментарий от Joe_Bishop

> не умеет рекурсию и функции,

Это обусловлено идеологией. Шаблоны - это представление, туда не суют сложную логику. Кроме того, функции легко приделать через модели.

anonymous
()
Ответ на: комментарий от anonymous

> Ради вагона джанговских удобств

Я этот вагон (а может и целый состав) могу найти и в других проектах. НИЧЕГО революционного и фантастического в джанге нет. Я не испытываю к ней неприязни, вижу в ней хорошие стороны, но не страдаю фанатизмом. Для маленьких простеньких сайтегов - лучшее решение, сложно спорить. Для чего-то более - не так все однозначно.

anonymous
()
Ответ на: комментарий от anonymous

Хех, я умиляюсь :) Он говорит, "назовите мне шаблонизатор быстрее!" Ему говорят, "ну вот, например, такой-то". Он орет, "да нихрена он не быстрый! Тесты давай!" Ему отвечают "ну вот тебе тесты" А он снова "да не верю я вашим тестам!"

Ммм... Сублимация, кажется, так это дядюшка З.Ф. называл, а? :)

anonymous
()
Ответ на: комментарий от anonymous

> Я этот вагон (а может и целый состав) могу найти и в других проектах. НИЧЕГО революционного и фантастического в джанге нет. Я не испытываю к ней неприязни, вижу в ней хорошие стороны, но не страдаю фанатизмом.

Нету для питона фреймворка класса джанги. Можно склеить это всё из разных компонент, но нельзя из этого получить целостный фреймворк. Дело здесь не в фанатизме, а в необходимости.

> Для маленьких простеньких сайтегов - лучшее решение, сложно спорить. Для чего-то более - не так все однозначно.

Ой рассмешил. Для маленьких "сайтегов" можно и web.py использовать. Для более-менее крупного проекта плюсы джанги начинают перевешивать. Особенно начинает помогать её целостность, когда с первого взгляда понимаешь, что где лежит и как это всё работает.

anonymous
()
Ответ на: комментарий от anonymous

Ну если ты думаешь, что это часть вселенского заговора против тебя, проведи свои тесты. Удивись. Джанго темплейт энджин один из самых тормознутых среди аналогов.

anonymous
()
Ответ на: комментарий от anonymous

http://dev.pocoo.org/hg/jinja2-main/file/tip/examples/bench.py

===============================================================================

                       Template Engine BigTable Benchmark
===============================================================================

    This benchmark compares some python templating engines with Jinja 2 so
    that we get a picture of how fast Jinja 2 is for a semi real world
    template.  If a template engine is not installed the test is skipped.
-------------------------------------------------------------------------------

    jinja               0.0116 seconds
    mako                0.0126 seconds
    tenjin              0.0122 seconds
    spitfire            *not installed*
    django              0.4122 seconds
    genshi              0.4401 seconds
    cheetah             0.0466 seconds

ero-sennin ★★
()
Ответ на: комментарий от ero-sennin

Недавно профилировали свой сайт - на генерацию страниц из шаблонов уходило 80% времени - это уж ни в какие ворота не лезет. Это при том, что на каждую страницу делается по 10-20-30 SQL-запросов.

ero-sennin ★★
()
Ответ на: комментарий от ero-sennin

Значит я отстал от жизни. Последний раз этой темой интересовался года полтора назад. Тогда джанговские темплейты все хвалили. Но тут есть небольшие сомнения - они хотя бы дебаг-режим у джанги выключили перед тестированием? А то цифры какие-то совсем нереальные.

anonymous
()
Ответ на: комментарий от anonymous

Тебе лично доказывать никто ничего не собирается. Если у тебя есть сомнения - проведи свои тесты.

А отставать в нашем деле нельзя вообще ни на день...

anonymous
()
Ответ на: комментарий от anonymous

Мне незачем ничего тестировать - узкие места у меня совсем не в темплейтах. Но отставание в 40 раз - вы в это верите? Они их что, в GPU парсят штоле?

anonymous
()
Ответ на: комментарий от anonymous

>> не умеет рекурсию и функции,

> Это обусловлено идеологией. Шаблоны - это представление, туда не суют сложную логику.

К python для простых личных веб-проектов пока только присматриваюсь. Смотрю везде джанго хвалят. Но если ее шаблоны рекурсии не умеют, то это действительно плохо. Сразу приходит на ум красивый и аккуратный код генерации многоуровневого меню, генерить в модели "плоскую" структура не всегда удобно и красиво. Ну а без функций вообще не понятно как жить :)

Хотя, повторюсь, что с джанго не работал, для веба использую JEE, если брать местные шаблонизаторы, то нравится velocity и freemaker (пишу на нем шаблоны тегов для Struts 2).

anonymous
()
Ответ на: комментарий от ero-sennin

TEMPLATE_DEBUG = DEBUG ?

Если нет, тогда придётся сделать поход по блогам джангистов и обсудить сей прискорбный факт. Может быть даже заменю шаблоны, если это не вызовет геморрой.

anonymous
()
Ответ на: комментарий от anonymous

В джанге есть темплейт-теги. Вот он примет твой список и сделает из него вложенный список. Если конечно ты этот тег напишешь. Ограничения довольно условные, всегда есть выход.

anonymous
()

И при чем здесь PERL??????????

anonymous
()

class index:
    def GET(self):
        return "Hello, world!"


о_О А это разве удобно, создавать класс на каждый чих? где может быть оправдано? имхо так намного логичнее:

get '/' do
   "Hello, World!"
end

post '/' do
   "Hello, #{params[:name]}!"
end

volh ★★
()
Ответ на: комментарий от anonymous

вообще-то по прогрессивности джава фреймворки (и др. нашлепки) отстают от рельсовых ничуть не меньше питоньих, простосто через тырпрайзные очки это плохо видно.

Syncro ★★★★★
()
Ответ на: комментарий от anonymous

Jinja и другие быстрые шаблонизаторы компилируют шаблоны в питоний байткод, поэтому они работают со скоростью Питона. А Django шаблоны интерпретирует, поэтому они работают со скоростью интерпретатора, написанного на Питоне. Ещё в Jinja, в отличие от Django, контект шаблонов иммутабельный, это позволяет многие вещи оптимизировать.

Ещё у Django есть такая странная проблема: шаблоны каждый раз перечитываются и парсятся заново.

ero-sennin ★★
()
Ответ на: комментарий от Syncro

> а что мешает использовать свой render_to_response с блекджеком и нинзями:) ?

Вот как раз собираемся переходить на Jinja уже который месяц, только кода и шаблонов уже накопился вагон, за день не переедешь.

ero-sennin ★★
()
Ответ на: комментарий от anonymous

> К python для простых личных веб-проектов пока только присматриваюсь. Смотрю везде джанго хвалят. Но если ее шаблоны рекурсии не умеют, то это действительно плохо. Сразу приходит на ум красивый и аккуратный код генерации многоуровневого меню, генерить в модели "плоскую" структура не всегда удобно и красиво. Ну а без функций вообще не понятно как жить :)

ничто не мешает тебе заюзать сторонний шаблонизатор.

Joe_Bishop
()
Ответ на: комментарий от Joe_Bishop

> ничто не мешает тебе заюзать сторонний шаблонизатор.

А смысл тогда использовать Django? Потом захочется сторонний ORM, потом сторонний маршрутизатор и т. д. Я б если сейчас начинал новый проект, которому не нужна джанговская админка, сразу взял бы Werkzeug.

ero-sennin ★★
()
Ответ на: комментарий от ero-sennin

я думаю народ проблему генерации шаблонов и т.п. решает кэшированием, поэтому не стоит так убиваться из-за результатов тестов. А 20 запросов на странице это совсем не плохо (опять же если кэшировать), большие готовые ЦМС делают сотни запросов. Но таки да надо стремиться к лучшему, но вот с тем же пилонсом как-то сыкотно работать.

Syncro ★★★★★
()
Ответ на: комментарий от Syncro

У нас скорее CRM, чем CMS, кэшировать там и нечего.

А Pylons - это зло, по-моему, там столько всякой магии, что оно не может не ломаться.

ero-sennin ★★
()

Работаю с Django 2 года - если надо что-то сделать нестандартное, сразу вылезают бока. Два самых убогих компонента в Django это шаблоны и ORM. Простые вещи делаются просто и удобно.

Следующий проект хочу попробовать делать на Paste+WebOp+SQLAlchemy+Mako.

anonymous
()
Ответ на: комментарий от ero-sennin

вот-вот и турбаджирс тудаже. А если у вас модная штуковина на аяксе, чего переживать из-за генерации шаблонов ? Вообще, да, джанга, она для сайтов, которые надо сделать не затратно и не на трех буквах. А в случае, особенного продукта лучше по примеру пилонса собрать из состовляющих используя лучшие ORM, шаблонизатор, роутер и остальные батарейки.

Syncro ★★★★★
()
Ответ на: комментарий от anonymous

В целом выбор одобряю :) Но будь осторожен с Мако. Есть мнение, что в нем скорость достигается не особо выдающейся стабильностью.

anonymous
()
Ответ на: комментарий от Syncro

+1.

Турбогирс тоже вызывает неоднозначные оценки. Вроде бы проект и подавал надежды в свое время, но сейчас - ветка 1.х тупиковая, а ветка 2.х развивается слииишком медленно. Если вообще развивается :(

anonymous
()
Ответ на: комментарий от val-amart

а оно только в режиме mod_python форкается?

fMad ★★★
()
Ответ на: комментарий от anonymous

> Я тебе привожу конкретный пример - невозможность декомпозиции моделей приложения (в рамках терминологии джанго) из модуля в пакет.

Вы это сами придумали, или подсмотрели где? Если сами, то учите матчасть, если нет, то выбирайте более квалифицированные источники.

Сказочники, блин. Спорят о том, чего не знают.

anonymous
()
Ответ на: комментарий от anonymous

Пользую Джангу в течении 2-х лет. Доволен.

Но! Она очень не подходит когда надо "натянуть" ее на уже готовую базу данных. Вот когда намашетесь то ! :(
Если с "нуля" - всё быстро, просто и надежно (ОМГ - я сказал "глобально и надёжно" да?)

Про джангины темплэйты ... тормозов за ними не заметил, впрочем стремительности - тоже :) Все кто ругают их "недостаточную функциональность" - 100% перцы типа человек-оркестр ... код пишут сами, css -сами, даже картинки сами рисуют :-) А как только у вас всем кроме кода занимаются другие люди ... страшные люди - дезиГнеры! - вы полюбите Джанговские темплейты горячо и нежно :)


GR.

PS: Но на werkzeug всё же посмотрю :)

anonymous
()
Ответ на: комментарий от anonymous

Дизайнеры, которые пишут шаблоны - это утопия. На практике обычно бывает так: пишешь болванку, отдаёшь ему и говоришь: ВСЁ, ЧТО В ФИГУРНЫХ СКОБОЧКАХ - РУКАМИ НЕ ТРОГАТЬ! И то умудряются что-то поломать.

ero-sennin ★★
()

Вы не за то хвалите джангу, джанга хороша толковыми сторонними запчастями.

Надо вам превьюхи картинок делать, подключаешь какой-нибудь Nesh's Thumbnail и радуешься. Нужна отладочная консоль, где б показывались переменные в шаблоне, все sql запросы и прочие удобства? Подключаешь django-debug-toolbar. gravatars и openid тоже уже есть, бери и пользуйся.

Внутри тоже неплохие батарейки: хороший добротный contrib.auth с готовыми декораторами для вьюшек, ролями и группами, comments (есть сторонний threadedcomments), sitemaps генератор.

А штука вроде deseb, представляющая состояние базы ввиде направленого графа и позволяющего крутить её туда сюда по этому графу в любой момент времени вообще на вес золота.

Почему ругатели джанги про это забывают? Видимо страдают NIH синдромом.

redbaron ★★
()
Ответ на: комментарий от anonymous

Zope3 куда более целостный и продуманный фреймфорк чем джанга, а уж расширяемость даже сравнивать нечего.

anonymous
()
Ответ на: комментарий от ero-sennin

>Дизайнеры, которые пишут шаблоны - это утопия.

Бывают и такие ... но обычно с таким же успехом как 0дмины - рисуют :)

>На практике обычно бывает так: пишешь болванку, отдаёшь ему и говоришь: ВСЁ, ЧТО В ФИГУРНЫХ СКОБОЧКАХ - РУКАМИ НЕ ТРОГАТЬ! И то умудряются что-то поломать.


Истинно так! Но вот с джангиными - такое происходит реже. Почему - не знаю - но факт! Впрочем - думаю потому что там не язык, а разметка ... Но я не настаиваю - походу мы с разными дезигнерами работаем :)

GR.

PS: Тем более как я понял - вы уперлись в производительность. Тогда такой пустяк как удобная работа в команде с дезигнерами вас волнует в нн-надцатую очередь - так? У ваших и моих оценок разные веса на критериях - ясен пень №1 вышел разным :)

anonymous
()
Ответ на: комментарий от anonymous

> Zope3 куда более целостный и продуманный фреймфорк чем джанга, а уж расширяемость даже сравнивать нечего.

Зопа - огромный страшный тяжеловесный ынтерпрайз-монстр.

yk4ever
()
Ответ на: комментарий от redbaron

> Почему ругатели джанги про это забывают? Видимо страдают NIH синдромом.

NIH-синдром иногда полезен.

Когда сложность приложения достигает определённого уровня, трудозатраты на допилку сторонних компонент начинают приближаться к трудозатратам на написание их с нуля.

Скажем так, я за время работы с джангой несколько раз спотыкался об её ограничения и мне надоело.

yk4ever
()
Ответ на: комментарий от gods-little-toy

с большими данными капец. именно из-за этого пришлось на голом цги писать, когда нужно было под железку с 32МБ РАМа наваять вебинтерфейс. yield, кстати, был бы вариантом при выдаче, но абсолютно не спасает от того что заПОСТченный файл передается как переменная, причем копируется дважды

val-amart ★★★★★
()

Скажите пожалуйста малоопытному мне,
в каких фреймворках организован html-DOM интерфейс именно такой,
какой в nevow.stan, просто об этом как-то не всегда пишут.

stan преобразует Python-объект в xhtml-код, при этом по умолчанию обрабатываются базовые Python-объекты, также есть набор объектов, изображающих тэги,
а кроме этого поддерживается любой callable и также любой другой объект, реализующий определённый интерфейс.

stan = tags.html[
           tags.body[
               "Hello there", tags.br, "blablabla"
           ]
       ]

Особенно приятно в этом то, что поддерживается визуализация моих собственных объектов, списков , туплей и функций. Считается, что функции возвращают stan.
С объектами и функциями я могу составить динамический xhtml-шаблон на языке питон и без использования HTML-разметки в коде, положить его в переменную и использовать его несколько раз,
каждый раз может генерироваться новое содержимое, не будет меняться только структура.
Самое интересное - у меня всегда будет получаться валидный XHTML.

Капча inlider о чём-то шепчет...

anonymous
()
Ответ на: комментарий от anonymous

nevow.stan казалось бы красив, но совершенно не отвечает современным реалиям, которые заключаются в том, что программист пишет код, а дизайнер и верстальщик на пару кроят внешний вид, а кроить они его умеют только в html.

redbaron ★★
()
Ответ на: комментарий от redbaron

Советую узнать о nevow.stan подробнее.
Шаблоны XHTML там реализуются в виде XHTML.
Шаблонизация происходит за счёт атрибутов render и проч.
В render, насколько я помню, задаётся callable, который отвечает за отображение.
Других атрибутов уже не помню, суть в том, что шаблон из XHTML загружается в python-DOM,
получается stan, который потом обрабатывается стандартным способом.

Таким образом, можно из файлов XHTML создавать stan-объекты, а не только наоборот.
Понятно, что верстать такой шаблон можно прямо в любимом десигнерском редакторе,
самое приятное - потом его можно там же перевёрстывать,
причём так, что потом допиливать программерский код в HTML заново не придётся.

Вы лучше скажите, это не модно так делать или какие ещё фреймворки такое позволяют?

anonymous
()
Ответ на: комментарий от redbaron

>ZPT Tal (шаблоны Zope) такое умеет.

Спасибо, проверю ещё раз, в первый раз не заметил.

Какие ещё?

Zope медленно превращается в религию...

anonymous
()
Ответ на: комментарий от anonymous

Работаю с Django уже более 2-х лет. Если нужно сделать что-то нестандартное, все решается очень просто и красиво, просто не нужно забывать, что вы пишите на Python все-таки и все возможности его доступны.

Плюсы Django - прекрасная документация (легко обучать команду), отличная расширяемая авто-админка, удобная система авторизации, прекрасное кеширование, поддержка middlware, расширяемый шаблонизатор, большое сообщество.

Те, кто говорят, что на Django можно делать только небольшие проекты, заблуждаются. Как раз наоборот - на Django очень хорошо делать большие проекты со сложной структурой и долгосрочной поддержкой.

Шаблонизатор не самый быстрый, но очень удобный (mako с этой точки зрения не конкурент). Как вариант, возможно использование jinja (синтаксис похожий кстати).

По web.py - наблюдая в течение пары лет разговоры в гугл-группе, вынужден констатировать печальное состояние, которое не улучшается (наблюдая - так как вклад вносить не хочется - не вижу смысла).

Кстати, забавно, есть весьма интересный проект web2py, но с web.py он имеет мало общего.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.