Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«Π―Π·Ρ‹ΠΊ программирования PythonΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 36

Автор Π ΠΎΠΌΠ°Π½ Π‘ΡƒΠ·ΠΈ

 AuthType Basic

 AuthName "My page"

 require valid–user

</Directory>

РазумССтся, это β€” всСго лишь ΠΏΡ€ΠΈΠΌΠ΅Ρ€. Π’ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ идСнтификация ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ устроСна Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ слоТнСС.

Π”Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ (ΠΏΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΊ mod_python ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ, Π² ΠΊΠ°ΠΊΠΈΠ΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запроса ΠΎΠ½ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ):

PythonPostReadRequestHandler

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ³ΠΎ запроса сразу послС Π΅Π³ΠΎ получСния.

PythonTransHandler

ΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ URI запроса (Π² Ρ‚ΠΎΠΌ числС имя Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сСрвСра).

PythonHeaderParserHandler

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠΎΠ»Π΅ΠΉ запроса.

PythonAccessHandler

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ доступа (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎ IP–адрСсу).

PythonAuthenHandler

Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

PythonTypeHandler

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ/ΠΈΠ»ΠΈ настройка Ρ‚ΠΈΠΏΠ° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°, языка ΠΈ Ρ‚.Π΄.

PythonFixupHandler

ИзмСнСниС ΠΏΠΎΠ»Π΅ΠΉ нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ Π²Ρ‹Π·ΠΎΠ²ΠΎΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² содСрТимого.

PythonHandler

Основной ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ запроса.

PythonInitHandler

PythonPostReadRequestHandler ΠΈΠ»ΠΈ PythonHeaderParserHandler Π² зависимости ΠΎΡ‚ нахоТдСния Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ web–сСрвСра.

PythonLogHandler

Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ записью Π² Π»ΠΎΠ³ΠΈ.

PythonCleanupHandler

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ Requestβ€“ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

НСкоторыС ΠΈΠ· этих ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ глобально, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ Π΄Π°ΠΆΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈΡ… прилоТСния ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСизвСстСн (Ρ‚Π°ΠΊΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, PythonPostReadRequestHandler).

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ mod_python ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ web–сайты с динамичСским содСрТимым ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ аспСкты Ρ€Π°Π±ΠΎΡ‚Ρ‹ web–сСрвСра Apache Ρ‡Π΅Ρ€Π΅Π· Python–сцСнарии.

Π‘Ρ€Π΅Π΄Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ

Для создания Web–прилоТСний ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΈ Π±ΠΎΠ»Π΅Π΅ слоТныС срСдства, Ρ‡Π΅ΠΌ web–сСрвСр с располоТСнными Π½Π° Π½Π΅ΠΌ статичСскими Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΈ CGI–сцСнариями. Π’ зависимости ΠΎΡ‚ назначСния Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ систСмы Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ сСрвСрами web–прилоТСний, систСмами управлСния содСрТимым (CMS, Content Management System), систСмы web–публикации ΠΈ срСдствами для создания WWW–порталов. ΠŸΡ€ΠΈΡ‡Π΅ΠΌ CMS–систСма ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΊΠ°ΠΊ web–прилоТСниС, Π° срСдства для создания ΠΏΠΎΡ€Ρ‚Π°Π»ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π±Π°Π·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π½Π° систСмах web–публикации, для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… CMS–систСма являСтся подсистСмой. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, выбирая систСму для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Π½ΡƒΠΆΠ΄, стоит ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ.

Π―Π·Ρ‹ΠΊ Python, хотя ΠΈ уступаСт PHP ΠΏΠΎ количСству созданных Π½Π° Π½Π΅ΠΌ web–систСм, ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько достаточно популярных ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π‘Π°ΠΌΡ‹ΠΌ ярким ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ срСдства для создания сСрвСра web–прилоТСний являСтся Zope (произносится Β«Π·ΠΎΠΏΒ») (см. http://zope.org) (Z Object Publishing Environment, срСда ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²). Zope ΠΈΠΌΠ΅Π΅Ρ‚ встроСнный web–сСрвСр, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ Web–сСрвСрами, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Apache. На основС Zope ΠΌΠΎΠΆΠ½ΠΎ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ web–порталы, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Plone/Zope, Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈ собствСнныС web–прилоТСния. ΠŸΡ€ΠΈ этом Zope позволяСт Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π€ΠΎΡ€ΠΌΡƒ, Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ ΠΈ Π›ΠΎΠ³ΠΈΠΊΡƒ Π΄ΠΎ Ρ‚Π°ΠΊΠΎΠΉ стСпСни, Ρ‡Ρ‚ΠΎ Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ΠΌ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒΡΡ ΠΎΠ΄Π½ΠΈ люди (ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Ρ‹ ΠΏΠΎ содСрТимому), Π€ΠΎΡ€ΠΌΠΎΠΉ β€” Π΄Ρ€ΡƒΠ³ΠΈΠ΅ (web–дизайнСры), Π° Π›ΠΎΠ³ΠΈΠΊΠΎΠΉ β€” Ρ‚Ρ€Π΅Ρ‚ΡŒΠΈ (программисты). Π’ случаС с Zope Π›ΠΎΠ³ΠΈΠΊΡƒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ языка Python (ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Perl), Π€ΠΎΡ€ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ создана Π² графичСских ΠΈΠ»ΠΈ спСциализированных web–рСдакторах, Π° Ρ€Π°Π±ΠΎΡ‚Π° с содСрТимым ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π° Ρ‡Π΅Ρ€Π΅Π· Web–формы самого Zope.

Zope ΠΈ Π΅Π³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½Π°Ρ модСль

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… этой Π»Π΅ΠΊΡ†ΠΈΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠΉ инструмСнт ΠΊΠ°ΠΊ Zope, поэтому стоит лишь Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ достаточно интСрСсСн Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² качСствС срСды Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ web–прилоТСний, Π½ΠΎ ΠΈ с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΎΠ². НапримСр, ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Π°Ρ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎβ€“ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Π°Ρ модСль Zope позволяСт довольно Π³ΠΈΠ±ΠΊΠΎ ΠΎΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Zope Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ возмоТности:

β€’ Web–сСрвСр. Zope ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Web–сСрвСрами Ρ‡Π΅Ρ€Π΅Π· CGI ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свой встроСнный Web–сСрвСр (ZServer).

β€’ Π‘Ρ€Π΅Π΄Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΠΊΠ°ΠΊ Web–прилоТСниС. Zope позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Web–прилоТСния Ρ‡Π΅Ρ€Π΅Π· Web–интСрфСйс.

β€’ ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° сцСнариСв. Zope ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ нСсколько языков сцСнариСв: Python, Perl ΠΈ собствСнный DTML (Document Template Markup Language, язык Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ шаблона Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°).

β€’ Π‘Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Zope ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π² своСй Ρ€Π°Π±ΠΎΡ‚Π΅ устойчивыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… (ZODB). Π˜ΠΌΠ΅Π΅Ρ‚ΡΡ достаточно простой интСрфСйс для управлСния этой Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ….

β€’ Π˜Π½Ρ‚Сграция с рСляционными Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Zope ΠΌΠΎΠΆΠ΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ свои ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² рСляционных Π‘Π£Π‘Π”: Oracle, PostgreSQL, MySQL, Sybase ΠΈ Ρ‚.ΠΏ.

Π’ ряду Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… систСм Zope Π½Π° ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ взгляд каТСтся странным ΠΈ нСприступным, ΠΎΠ΄Π½Π°ΠΊΠΎ Ρ‚Π΅ΠΌ, ΠΊΡ‚ΠΎ с Π½ΠΈΠΌ Β«Π½Π° Ρ‚Ρ‹Β», ΠΎΠ½ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Π΅Ρ‚ большиС возмоТности.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Zope исходили ΠΈΠ· Π»Π΅ΠΆΠ°Ρ‰Π΅ΠΉ Π² основС WWW ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΡƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΠΎ URI ΠΌΠΎΠΆΠ½ΠΎ ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠΎΠΉ сообщСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Zope Ρ€Π°Π·Π»ΠΎΠΆΠ΅Π½Ρ‹ ΠΏΠΎ ΠΏΠ°ΠΏΠΊΠ°ΠΌ (folders), ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ привязаны ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠΈ доступа для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ€ΠΎΠ»ΠΈ. Π’ качСствС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΡΡ‚ΡƒΠΏΠ°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹, изобраТСния, ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ°β€“Ρ„Π°ΠΉΠ»Ρ‹, Π°Π΄Π°ΠΏΡ‚Π΅Ρ€Ρ‹ ΠΊ Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚.ΠΏ.

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Zope ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π° языкС DTML β€” Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ HTML с синтаксисом для Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ SSI (Server–Side Include). НапримСр, для вставки ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ с Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ

<!-- #var document_title -->

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ Zope ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свои Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π² частности, написанныС Π½Π° языкС Python. ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΆΠ΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΡΠ²Π»ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ ΠΈΠ· Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚Π°ΠΊ ΠΈ ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… источников Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… посрСдством выполнСния Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ SELECT).

БСйчас для описания Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Zope всС Ρ‡Π°Ρ‰Π΅ примСняСтся ZPT (Zope Page Templates, ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ страниц Zope), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π² свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ TAL (Template Attribute Language, язык ΡˆΠ°Π±Π»ΠΎΠ½Π½Ρ‹Ρ… Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ²). Он позволяСт Π·Π°ΠΌΠ΅Π½ΡΡ‚ΡŒ, ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ элСмСнты Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° описываСмого шаблоном Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°. Β«ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈΒ» языка TAL ΡΠ²Π»ΡΡŽΡ‚ΡΡ XML–атрибуты ΠΈΠ· пространства ΠΈΠΌΠ΅Π½ TAL. ΠŸΡ€ΠΎΡΡ‚Ρ€Π°Π½ΡΡ‚Π²ΠΎ ΠΈΠΌΠ΅Π½ сСгодня описываСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ:

xmlns:tal="http://xml.zope.org/namespaces/tal"

ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ TAL ΠΈΠΌΠ΅Π΅Ρ‚ имя ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ (Ρ‡Ρ‚ΠΎ выраТаСтся ΠΈΠΌΠ΅Π½Π΅ΠΌ ΠΈ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π°). Π’Π½ΡƒΡ‚Ρ€ΠΈ значСния ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ записано TAL–выраТСниС, синтаксис ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ описываСтся Π΄Ρ€ΡƒΠ³ΠΈΠΌ языком β€” TALES (Template Attribute Language Expression Syntax, синтаксис Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ TAL).

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ZPT наполняСт содСрТимым ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, интСрпрСтируя Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ TAL. НапримСр, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Zope подставил Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° (Ρ‚Π΅Π³ TITLE), шаблон ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

<title tal:content="here/title">Doc Title</title>

Π‘Ρ‚ΠΎΠΈΡ‚ Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ сойдСт Π·Π° ΠΊΠΎΠ΄ Π½Π° HTML, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Web–дизайнСр ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π° любом этапС Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ шаблон Π² HTML–рСдакторС (ΠΏΡ€ΠΈ условии, Ρ‡Ρ‚ΠΎ Ρ‚ΠΎΡ‚ сохраняСт Π½Π΅Π·Π½Π°ΠΊΠΎΠΌΡ‹Π΅ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈΠ· пространства ΠΈΠΌΠ΅Π½ tal). Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ here/title являСтся Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ TALES. ВСкст Doc Title слуТит ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠΌ для web–дизайнСра ΠΈ замСняСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ выраТСния here/title, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Π±ΡƒΠ΄Π΅Ρ‚ взято свойство title Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π° Zope.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅:

Π’ Zope ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ свойства. Набор свойств зависит ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ Π² ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠΌ порядкС. Бвойство id присутствуСт всСгда, свойство title ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Ρ‚ΠΎΠΆΠ΅ указываСтся.

Π’ качСствС Π±ΠΎΠ»Π΅Π΅ слоТного ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡŽ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π° Π²Π½ΡƒΡ‚Ρ€ΠΈ шаблона (для опробования этого ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° Π² Zope Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Page Template):

<ul>

 <li tal:define="s modules/string"

  tal:repeat="el python:s.digits">

 <a href="DUMMY"

  tal:attributes="href string:/digit/$el"

  tal:content="el">SELECTION</a>

 </li>

</ul>

Π­Ρ‚ΠΎΡ‚ шаблон ΠΏΠΎΡ€ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚:

<ul>

 <li><a href="/digit/0">0</a></li>

 <li><a href="/digit/1">1</a></li>

 <li><a href="/digit/2">2</a></li>

 <li><a href="/digit/3">3</a></li>

 <li><a href="/digit/4">4</a></li>

 <li><a href="/digit/5">5</a></li>

 <li><a href="/digit/6">6</a></li>

 <li><a href="/digit/7">7</a></li>

 <li><a href="/digit/8">8</a></li>

 <li><a href="/digit/9">9</a></li>

</ul>

Π—Π΄Π΅ΡΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π΄Π²Π° основных ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°:

β€’ Π² шаблонС ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ выраТСния Python (Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ пСрСмСнная s ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π° ΠΊΠ°ΠΊ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Python) ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽβ€“ΡΡ‡Π΅Ρ‚Ρ‡ΠΈΠΊ Ρ†ΠΈΠΊΠ»Π° el, которая ΠΏΡ€ΠΎΡ…ΠΎΠ΄ΠΈΡ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ строкС string.digits.

β€’ Ρ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ TAL ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ содСрТимоС элСмСнта, Π½ΠΎ ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° Ρ‚Π΅Π³Π° (Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ использовался Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ href).

Π”Π΅Ρ‚Π°Π»ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΏΠΎ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Π‘Ρ‚ΠΎΠΈΡ‚ лишь Π·Π°ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ итСрация ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎ самым Ρ€Π°Π·Π½Ρ‹ΠΌ источникам Π΄Π°Π½Π½Ρ‹Ρ…: содСрТимому Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠ°ΠΏΠΊΠΈ, Π²Ρ‹Π±ΠΎΡ€ΠΊΠ΅ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ»ΠΈ, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅, ΠΏΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ Python.