Pyramid Documentation / Документация Pyramid: narr/configuration.rst
| Английский оригинал | Перевод на русский | |
|---|---|---|
Сожалеем, но текст оригинала доступен только зарегистрированным пользователям. |
.. index:: uhbif19 17.04.11 в 16:38 |
|
|
.. _configuration_narr: uhbif19 17.04.11 в 16:38 |
||
|
Конфигурация приложения uhbif19 17.04.11 в 16:38 |
||
|
Каждая установка приложения написанного на :app:Pyramid создает специфичную *конфигурацию*. Например приложение хранящие MP3 файлы, подключает код для управления музыкальными файлами. А например приложение для корпоративного использования, может подключать код для управления данными о пользователях. Способ которым код подключается к приложению на :app:Pyramid называется "конфигурация". uhbif19 18.04.11 в 15:25 |
||
|
Большинство людей понимают "конфигурацию", как настройки экземпляра приложения. Например легко думать, что значения определенные в .ini файле, считываются при запуске приложения как "конфигурация". :app:Pyramid расширяет это понятие , называя так стандартные способы подключения внешнего кода. Когда вы подключаете код к :app:Pyramid вы "конфигурируете" приложение. uhbif19 20.04.11 в 17:12 |
||
|
.. index:: uhbif19 22.04.11 в 04:15 |
||
|
.. _imperative_configuration: uhbif19 22.04.11 в 04:15 |
||
|
Императивная конфигурация uhbif19 22.04.11 в 04:16 |
||
|
Вот несколько простейших приложений :app:Pyramid, сконфигурированных императивно: uhbif19 23.04.11 в 19:05 |
||
|
.. code-block:: python uhbif19 23.04.11 в 19:05 |
||
|
from paste.httpserver import serve uhbif19 23.04.11 в 19:06 |
||
|
def hello_world(request): uhbif19 23.04.11 в 19:06 |
||
|
if __name__ == '__main__': uhbif19 23.04.11 в 19:06 |
||
|
Мы пока не будем обсуждать, что делает приложение. Просто запомните, что конфигурационные выражения вида if __name__ == uhbif19 07.05.11 в 22:12 |
||
|
.. index:: uhbif19 26.04.11 в 17:25 |
||
|
.. _decorations_and_code_scanning: uhbif19 26.04.11 в 17:25 |
||
|
Декораторы и обработка кода uhbif19 26.04.11 в 17:26 |
||
|
Другой вариант конфигурации, делает её более приближенной к самому коду. Иногда сложно держать конфигурацию отдельно, когда код занимает несколько файлов. Тогда, чтобы увидеть проект целостно, вам придется работать с множеством файлов. :app:Pyramid позволяет вам избежать этого. К примеру : uhbif19 27.04.11 в 17:09 |
||
|
.. code-block:: python uhbif19 27.04.11 в 17:09 |
||
|
from pyramid.response import Response uhbif19 27.04.11 в 17:09 |
||
|
@view_config(name='hello', request_method='GET') uhbif19 27.04.11 в 17:09 |
||
|
Но есть тонкость, что простая декорация не записывает никаких изменений в конфигурации. Для оказания эффекта на конфигурацию, необходимо провести процесс :term:сканирования uhbif19 07.05.11 в 22:44 |
||
|
Например декоратор :class:pyramid.view.view_config, в примере добавляет атрибуты к функции hello, делая их доступными для последующего сканирования. uhbif19 07.05.11 в 22:46 |
||
|
:term:сканирование модуля какого либо пакета и его под-пакетов на декораторы, происходит когда вызывается метод :meth:pyramid.config.Configurator.scan: сканирование запускает поиски конфигурации в пакете. К примеру: uhbif19 07.05.11 в 22:48 |
||
|
.. topic:: Starting A Scan uhbif19 07.05.11 в 22:48 .. topic:: Starting A Scan uhbif19 07.05.11 в 22:48 |
||
|
.. code-block:: python uhbif19 07.05.11 в 22:48 |
||
|
from paste.httpserver import serve uhbif19 07.05.11 в 22:48 |
||
|
@view_config() uhbif19 07.05.11 в 22:48 |
||
|
if __name__ == '__main__': uhbif19 07.05.11 в 22:48 |
||
|
Механизм сканирования импортирует каждый модуль рекурсивно, находя специальные атрибуты обьектов определенных в модуле.Эти атрибуты определяются в коде обыкновенно, с помощью декораторов. Например декоратор :class:~pyramid.view.view_config может быть назначен функции или методу. uhbif19 07.05.11 в 22:52 |
||
|
Когда сканирование запущенно, и декораторы конфигурации найдены сканером, ряд вызовов совершается к классу :term:Configurator от вашего имени :они заменяют необходимость делать императивную конфигурацию. uhbif19 07.05.11 в 22:57 |
||
|
В примере сверху, сканер переводит аргументы class:~pyramid.view.view_config в вызовы метода :meth:pyramid.config.Configurator.add_view. uhbif19 07.05.11 в 22:59 |
||
|
.. ignore-next-block uhbif19 07.05.11 в 22:59 |
||
|
config.add_view(hello) uhbif19 07.05.11 в 23:00 |
||
|
Декларативная конфигурация uhbif19 07.05.11 в 23:00 |
||
|
Третий вид конфигурации :app:Pyramid называется *декларативная конфигурация*. Этот режим использует XML базированный язык разметки :term:ZCML для конфигурации. ZCML не встроен в Pyramid. Вы можете использовать его, установив пакет :term:pyramid_zcml. uhbif19 07.05.11 в 23:05 |
