колекція вільного програмного забезпечення, частини якого можна легко повторно використати
проект, що в активній розробці з 2001 року та має велику спільноту
Можливості Zope 3
компонентна архітектура
об'єктна база даних (ZODB)
XHTML шаблони (ZPT)
автоматична генерація форм
інтернаціоналізація (i18n, l10n)
безпека
каталогізація
тестування
Недоліки Zope 3
складність швидкого старту із Zope 3
компоненти зв'язуються між собою за допомогою ZCML, що вимагає редагування додаткових конфігураційних файлів
ZCML сповільнює процес розробки — кожний новий компонент вимагає своїх директив
Що потребує покращення в Zope 3
спростити розробку аплікацій як для початківців, так і для досвідчених розробників
пришвидшити процес розробки
Шлях покращення
домовленості по структурі та вмісту пітонівських пакетів та модулів
відсутність конфігурації через ZCML
Ось тут і з'являється Grok
Хто такий Grok? Grok – дружня печерна людина із Кам'яного Віку. Він має велику булаву, якою полює на мамонтів, а крім того ще й трощить нею все, що йому не подобається (особливо в Zope 3).
Що таке Grok?
Каркас веб-аплікацій, побудований на базі Zope 3 та орієнтований на початківців і досвідчених розробників. Grok робить акцент саме на швидку розробку аплікацій, додаючи нові можливості та зберігаючи все, що є в Zope 3.
«ME GROK SMASH ZCML»
ZCML вже не обов'язковий
ти використовуєш домовленості запропоновані Grok'ом, а він аналізує твій пітонівський код і конфігурує твої компоненти
результат той самий, що й із явним конфігуруванням ZCML'ом
доданий новий інтерфейс адміністрування (grok.admin)
всі об'єкти по замовчуванню є доступними
шаблони (ZPT) по замовчуванню лежать в директорії «modulename_templates»
статичні ресурси лежать в директорії «static»
Cтарт із Grok'ом
Лише декілька команд і перша grok аплікація готова:
easy_install grokproject
grokproject HelloWorld
cd HelloWorld
bin/zopectl fg
Можна відкривати браузер
Головна сторінка аплікації
app.py import grok class HelloWorld(grok.Application, grok.Container): pass class Index(grok.View): pass # see app_templates/index.pt
index.pt <html> <head> </head> <body> <h1>Congratulations!</h1> <p>Your Grok application is up and running. Edit <code>HelloWorld/app_templates/index.pt</code> to change this page.</p> </body> </html>
Приклад адаптера import grok from zope import interface class Cave(grok.Model): pass class IHome(interface.Interface): pass class Home(grok.Adapter): grok.context(Cave) grok.implements(IHome) class IFireplace(interface.Interface): pass class Fireplace(grok.Adapter): grok.implements(IFireplace, IHome) grok.provides(IFireplace)
Розширення Grok
що робити, коли Grok не вміє регіструвати твій компонент?
писати ZCML?
ні, cтворити базовий клас і Grokker для цього компонента (і цим зробити Grok ще могутнішим)
0 comments
Post a comment