Является ли пирамида "модель" также пирамида "ресурс"? - PullRequest
0 голосов
/ 25 февраля 2019

Я сейчас нахожусь в процессе изучения того, как использовать веб-фреймворк Python Pyramid, и нашел документацию довольно превосходной.

Однако я столкнулся с камнем преткновения, когда дело доходит доотличает идею «модели» (то есть класса, определенного в декларативной системе SQLAlchemy) от идеи «ресурса» (то есть средства определения списков управления доступом в представлениях для использования с системой аутентификации Pyramid).

Я понимаю, что приведенные выше утверждения, кажется, показывают, что я уже понимаю разницу, но у меня возникают проблемы с пониманием, следует ли мне создавать ресурсы моделей (добавляя атрибут __acl__ непосредственно в класс модели) или создавая отдельный класс ресурсов(который имеет надлежащие атрибуты __parent__ и __name__), представляющий доступ к представлению, использующему модель.

Любое руководство приветствуется.

Ответы [ 2 ]

0 голосов
/ 06 марта 2019

Если модель предметной области приложения является иерархической, Pyramid предлагает идею ресурсов для построения дерева ресурсов.Обход используется для сопоставления URL-адресов с кодом и для идентификации ресурса в дереве ресурсов.Обычно вы не используете ресурсы и обход при работе с реляционной базой данных.

Выдержка из «Защита дизайна - Пирамида делает обход, а мне не нравится обход»

В Пирамиде обход - это акт разрешенияПуть URL к объекту ресурса в дереве ресурсов.Некоторым людям не нравится это понятие, и они считают, что это неправильно.К счастью, если вы используете Pyramid и не хотите моделировать свое приложение с точки зрения дерева ресурсов, вам вообще не нужно его использовать.Вместо этого используйте диспетчеризацию URL-адресов для сопоставления путей URL-адресов с представлениями.

Реляционные базы данных не являются иерархически естественными, поэтому обход одной базы данных, такой как дерево, невозможен.

Вы можете быть уверены, что если вы неЯ не хочу понимать обход, тебе не нужно.Вы можете успешно создавать приложения Pyramid только с отправкой URL.

Выдержка из Ресурсы

Ресурс - это объект, который представляет "место" вдерево, связанное с вашим приложением.(...) Дерево ресурсов - это набор вложенных словарных объектов, которые вы можете использовать для представления структуры вашего веб-сайта.

В приложении, которое использует обход для сопоставления URL-адресов с кодом, структура дерева ресурсов имеет видинтенсивно используется для отображения каждого URL на вызываемый вид.Когда используется обход, Pyramid будет проходить через дерево ресурсов, проходя через вложенную структуру словаря, чтобы найти ресурс контекста.Как только ресурс контекста найден, ресурс контекста и данные в запросе будут использованы для поиска вызываемого представления.

В приложении, которое использует диспетчеризацию URL-адресов, дерево ресурсов используется только косвенно и часто "невидим "для разработчика.(...) К этому корневому ресурсу иногда прикрепляются декларации безопасности, но не обязательно их иметь.В общем, дерево ресурсов гораздо менее важно в приложениях, использующих диспетчеризацию URL, чем в приложениях, использующих обход.

Я думаю, что эта тема широко освещена в документах.

Раньше я рекомендовал проект, чтобы подчеркнуть возможности Пирамиды.

Мое скромное мнение: вам не нужно полностью понимать обе концепции, чтобы использовать платформу Pyramid для своих первых проектов.Выберите URL Dispatch и SQLAlchemy при работе с реляционной базой данных.

Отрывок - Пирамида предоставляет слишком много «рельсов»

По своей структуре Pyramid не являетсяособенно самоуверенный веб-фреймворк.Pyramid предоставляет некоторые функции, которых нет в других веб-фреймворках.Это функции, предназначенные для вариантов использования, которые могут не иметь смысла, если вы создаете простое (...) веб-приложение.

0 голосов
/ 26 февраля 2019

У меня проблемы с пониманием, следует ли мне создавать ресурсы моделей (добавляя атрибут acl непосредственно в класс модели) или создавая отдельный класс ресурсов

Ответ зависит от того, какой уровень связи вы хотите иметь.Для простого приложения я бы порекомендовал делать ресурсы моделей просто для простоты.Но для сложного приложения с высоким уровнем связности и низким уровнем связи было бы лучше отделить модели от ресурсов.

...