Прежде всего, основная причина, по которой вы хотели бы позаботиться об этом при использовании отправки URL-адресов, заключается в использовании системы аутентификации пирамиды. Если вас это не волнует, вы можете полностью игнорировать контексты и деревья ресурсов и продолжать диспетчеризацию.
Деревья ресурсов
Пирамида имеет уникальную концепцию дерева ресурсов, которое буквально представляет собой дерево объектов, сопоставленное с путем. Это дерево проходится от корня до конца заданного пути. Во время обхода, если путь исчерпан или дерево сталкивается с конечным узлом, этот объект в дереве теперь является context
.
В URL Dispatch обход не происходит (по умолчанию), поэтому контекст всегда будет корнем вашего дерева ресурсов.
В общем, вы можете использовать контекст для чего угодно в своем приложении. Он явно используется ACLAuthorizationPolicy для определения разрешений. Это целая тема, и я предлагаю ознакомиться с моей демонстрацией, в которой объясняется, как использовать систему аутентификации Pyramid с отправкой URL [1. ].
Исключения
Обработка исключений в Pyramid осуществляется двумя разными способами:
- Вы можете использовать
try: except:
в своем представлении, чтобы вернуть другой ответ.
- Вы можете использовать представления исключений для более общей обработки исключений в вашем приложении.
Обратите внимание, что второй способ необходим для рендеринга 404 страниц, а если вы используете аутентификацию Pyramid, то и запрещенных страниц. Это связано с тем, что Pyramid внутренне генерирует исключения NotFound и Forbidden, которые вы должны перехватывать и отображать, если хотите их настроить.
Когда возникает исключение и существует зарегистрированное представление исключения, соответствующее этому типу, Pyramid вызовет представление исключения и передаст исключение в качестве нового контекста, поэтому контекст изменится.
Я не уверен, что проверка является хорошим примером представления исключений. Чаще представления используются для случаев ошибок или для сокращения выполнения в частях вашего приложения, не связанных с представлениями. Например, вы можете захотеть обрабатывать и возвращать разные страницы, когда вашему представлению не удается подключиться к вашей базе данных или когда вы хотите вернуть ответ 4xx или 5xx. По умолчанию, если исключение не обрабатывается, сервер WSGI просто превращает его в общую страницу 500. Представления исключений позволяют настраивать это поведение.
Важным выводом из всего этого является то, что все это необязательно. Если вы запутались, не волнуйтесь, потому что вы можете использовать Pyramid без этих вещей, и когда вы освоитесь, вы сможете начать включать их в свое приложение.
person
Michael Merickel
schedule
16.06.2011