Pull to refresh

Pylons Framework

Reading time 2 min
Views 3.9K

Расскажу я вам, дорогие мои читатели, о замечательном веб-фреймворке Pylons (язык Python). Непонятно почему он был так обделен вниманием на хабре. Постараюсь исправить такую несправедливость. Я считаю его лучшим и попытаюсь вам раскрыть многие его прелести.


Pylons создавался с оглядкой на популярные решения, так говорит нам wiki. Но по личному опыту скажу вам, что основные идеи были взяты из Ruby On Rails и улучшены!


Pylons активно использует внешние компоненты:



Работа с моделью


Практиковал только алхимию, по этому про неё и примеры.


Опишем нашу модель:


# Создадим Машу
user = User(name=u"Маша")
user.password = sha1("12345").hexdigest()
session.add(user)

# найдем Машу
masha = session.query(User).filter_by(name=u"Маша").first()
# Создадим пост
post = BlogPost(title=u"Мой первый пост", body="Я люблю печеньки",user = masha)
# добавим ключевое слово
post.keywords.append(Keyword(keyword='cookies'))
# удалим Машу
session.delete(masha)
# удалим всех, кто начинается на букву А, используя "продвинутую" алхимию
tUser = User.__table__
session.execute(tUser.delete().where(tUser.c.name.like(u'A%')))

Маршрутизация


Routes точная копия рельсового аналога. За исключением работы с поддоменами. Хотя я уверен это скоро появится и в других фреймворках.


Пример настройки маршрутов:


# именование
map.connect("user_info", "/users/:name/info", controller="account", action="info")

# submappers и префикс
with map.submapper(controller="blog", path_prefix="/blog/") as blog:
    # использование regexp
    blog.connect(R"{id:\d+}", action="show")
    # REST-стиль
    blog.connect("create", action="create", conditions=dict(method=["POST"]))
    blog.connect("update", action="update", conditions=dict(method=["PUT"]))

Используем:


url_for("user_info", name="vlad") => "/users/vlad/info"
url_for(controller="blog", action="show", id="5") => "/blog/5"

P.S.
Про шаблоны сказать особо нечего, рельсовая философия – писать питон код в них можно, хотя и не стоит, но для тестов удобно. А вот формы это другое дело, но это в следующий раз.


Спасибо за внимание.

Tags:
Hubs:
+29
Comments 50
Comments Comments 50

Articles