Уведомления

Группа в Telegram: @pythonsu

#1 Март 14, 2011 13:22:19

brutka
От:
Зарегистрирован: 2010-08-23
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Начало изучения Pyramid

добрый день!
имею опыт работ с Pylons,
для нового проекта решил использовать Pyramid.
не получается НАЧАТЬ… :-(

то есть, по документации вроде понятно, а вот все “до кучи” не могу сложить.

Есть ли какой-то практический пример (типа PylonsBook), в котором по шагам создается приложение?



Отредактировано (Март 14, 2011 15:34:45)

Офлайн

#2 Март 14, 2011 17:46:07

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Начало изучения Pyramid

Вообще-то в официальной доке два туториала есть. Вот тут еще пример http://www.serverzen.net/2010/11/8/getting-started-with-pyramid-a-notes-application



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Март 15, 2011 12:40:28

brutka
От:
Зарегистрирован: 2010-08-23
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Начало изучения Pyramid

PooH
Вообще-то в официальной доке два туториала есть. Вот тут еще пример http://www.serverzen.net/2010/11/8/getting-started-with-pyramid-a-notes-application
эти я видел.
наверное не полностью сформулировал свое непонимание.
непонимание того, чем Pyramid лучше Pylons.
Пройдя эти туториалы я не увидел ни помощников работы с формами, ни нормальной работы с базой (хотя бы как в том же руководстве PylonsBook).



Офлайн

#4 Март 15, 2011 13:46:27

ziro
От:
Зарегистрирован: 2009-08-13
Сообщения: 225
Репутация: +  8  -
Профиль   Отправить e-mail  

Начало изучения Pyramid

По работе с БД и формами - это все вынесено в отдельные проекты, смотрите например

- https://bitbucket.org/sluggo/pyramid_sqla
- https://bitbucket.org/sluggo/akhet
- http://pypi.python.org/pypi/pyramid_formalchemy

Также есть отдельные посты

- http://cd34.com/blog/framework/using-pyramid-with-deform-to-editcreate-records-in-sqlalchemy-backed-database/
- http://cd34.com/blog/framework/pylons-1-0-to-pyramid-1-0a1/

Из личного опыта - успешно прикручивал sqlalchemy и mongodb, а также formencode - проблем не было.



Офлайн

#5 Март 16, 2011 10:37:08

brutka
От:
Зарегистрирован: 2010-08-23
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Начало изучения Pyramid

ziro, спасибо, буду изучать.

есть еще пара вопросов, прошу ответить.
1. нужно сделать поддержку языка в URL. То есть, адрес имеет вид, /pagename - для языка по умолчанию, /ru/pagename - для языка русского, /en/pagename - для английского и т.д.
в Pylons это делал путем наследования класса Mapper и затем перегрузкой методов match, routematch.
как сделать подобное в Pyramid? (использую routes, не использую traversing)


2. в маршрутах Pylons было удобно прописать в маршруте контроллер, а название action бралось динамически. (как часть в URL)
как сделать подобное в маршрутах Pyramid? а то каждый вид отдельно прописывать совсем не удобно.

спасибо.



Отредактировано (Март 16, 2011 10:44:17)

Офлайн

#6 Март 16, 2011 11:57:17

ZZZ
От: Москва
Зарегистрирован: 2008-04-03
Сообщения: 2161
Репутация: +  26  -
Профиль   Адрес электронной почты  

Начало изучения Pyramid

brutka
(использую routes, не использую traversing)
Вот если бы использовал traversal, то таких вопросов бы не было.



Офлайн

#7 Март 16, 2011 12:14:55

brutka
От:
Зарегистрирован: 2010-08-23
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Начало изучения Pyramid

ZZZ
brutka
(использую routes, не использую traversing)
Вот если бы использовал traversal, то таких вопросов бы не было.
а конкретно? при всем уважении к Вашему рангу, прошу совета, а не флуда



Офлайн

#8 Март 16, 2011 14:38:54

ziro
От:
Зарегистрирован: 2009-08-13
Сообщения: 225
Репутация: +  8  -
Профиль   Отправить e-mail  

Начало изучения Pyramid

Да там все очень просто, если разобраться. Лучше всего конечно почитать официальную документацию, но для того, чтобы было понятно дальше на пальцах можно сказать так:

При траверсинге path_info разбивается на части между слешами, по которым и происходит поиск вызываемого ресурса и вызываемой вьюшки. Например, если запрашивается путь “/a/b/c/”, то при траверсинге его пирамида разобъет на части и начнет поиск ресурса начиная с корневого контейнера (создается фабрикой, которая устанавливается при конфигурации предложения) последовательно по очень простому алгоритму, который можно представить так:

    resource = root
for part in ["a", "b", "c"]:
try:
resource = resource[part]
except KeyError:
# Следующий ресурс не найден - тогда это должна быть именованная вьюха, причем последняя в списке
# иначе выбросится исключение NotFound
# Ресурс найден - должна вызваться дефолтная вьюха
Это позволяет делать различные ухищрения, например для локализации по вашему способу можно сделать так:

class Root(dict):
"""
Это реальный корневой элемент системы
"""
def __init__(self):
super(Root, self).__init__(blogs=BlogContainer(), news=NewsContainer(), users=UserContainer())

class Localizer(obj):
"""
Это хитрый адаптер для поддержки локализации
"""
def __init__(self, request):
self.request = request

def __getitem__(self, key):
"""
Вот здесь реальная работа с локалью
"""
if key in ['en', 'ru', 'fr', 'it', 'de']:
request._LOCALE_ = key
return Root()

request._LOCALE_ = 'en'
return Root()[key]

def get_root(request):
"""
Это фабрика для создания корневого ресурса
"""
return Localizer(request)



Офлайн

#9 Март 16, 2011 14:50:24

brutka
От:
Зарегистрирован: 2010-08-23
Сообщения: 38
Репутация: +  0  -
Профиль   Отправить e-mail  

Начало изучения Pyramid

не получается пока понять траверсинг :(

из приведенного примера с языками понятно, а вот как это выйдет потом на VIEW - не пойму пока никак…

подскажите, пожалуйста, а маршрутами это не сделать - как в Pylons было?

или учить траверсинг пока не пойму - это однозначная рекомендация?



Отредактировано (Март 16, 2011 15:00:35)

Офлайн

#10 Март 16, 2011 15:13:54

ziro
От:
Зарегистрирован: 2009-08-13
Сообщения: 225
Репутация: +  8  -
Профиль   Отправить e-mail  

Начало изучения Pyramid

Лучше учить - плюсов не очень чтобы много, но какие:
- Фасетная навигация - делается через ресурсы практически за пять минут;
- Поддержка встраиваемых приложений (как в джанге) - просто прописываешь в нужное место в дереве ресурсов корневой ресурс нужного приложения - делается настолько быстро - насколько быстро печатать умеете;
- доступ из шаблонов к любому ресурсу через корневой элемент - мелочь, а приятно - всегда доступна;
- позволяет эффективно смешивать реляционные и нереляционные БД и даже, при использовании интерфейсов, менять одни на другие - не то чтобы нужная вещь, но в хозяйстве пригодится;
- хорошая система ACL - позволяет навешивать разные ограничения доступа на любой объект или контейнер.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version