Python 理解金字塔中的资源和语境
请容忍我,因为我刚刚开始学习金字塔。我在理解金字塔中的上下文和资源时遇到困难,与URL调度有关。从文档、上下文和资源中的描述来看,我不太确定这意味着什么(对我来说)Python 理解金字塔中的资源和语境,python,resources,url-routing,pyramid,Python,Resources,Url Routing,Pyramid,请容忍我,因为我刚刚开始学习金字塔。我在理解金字塔中的上下文和资源时遇到困难,与URL调度有关。从文档、上下文和资源中的描述来看,我不太确定这意味着什么(对我来说) 金字塔中的资源是什么?这就是url试图表示的内容吗? 例如,如果url是/organization/add_users,则是资源组织还是用户 在上面的例子中,上下文也是组织吗 而且 什么是上下文对象 上下文对象应该包含什么?本教程中的示例仅包含ACL,而在init方法中没有任何内容 class RootFactory(obje
- 金字塔中的资源是什么?这就是url试图表示的内容吗?
例如,如果url是
,则是资源组织还是用户/organization/add_users
- 在上面的例子中,上下文也是组织吗
- 什么是上下文对象
- 上下文对象应该包含什么?本教程中的示例仅包含ACL,而在init方法中没有任何内容
class RootFactory(object): __acl__ = [(...some permissions...)] def __init__(self): pass
- 当抛出异常(例如禁止)时,上下文在什么时候发生变化
- 当出现禁止的错误时,我可以看到更改上下文的目的,但在执行验证等操作时,为什么要抛出一个注册到不同视图的异常,该视图可调用,并呈现到不同的模板,当我可以简单地渲染到同一视图中的不同模板,而不是引发异常时?(我在文档中看到了add_视图的验证错误示例)
上下文
在URL调度中,遍历不会发生(默认情况下),因此上下文将始终是资源树的根
一般来说,您可以在应用程序中使用上下文来处理任何需要的内容。ACLAuthorizationPolicy显式使用它来确定权限。这是一个完整的主题,我建议查看我的演示,它解释了如何将Pyramid的auth系统与URL Dispatch[]结合使用
例外情况
金字塔中的异常处理有两种不同的方式:
try:except:
返回不同的响应所有这一切的一个重要特点是它都是可选的。如果您感到困惑,请不要担心,因为您可以在不使用这些东西的情况下使用Pyramid,并且随着您变得更加舒适,您可以开始将它们合并到您的应用程序中。这里的示例:是不正确的 抛出的异常(至少与Pyramid 1.0-2相关)是Pyramid.exceptions.Forbidden;不是示例的pyramid.httpexceptions.HTTPForbidden
然而,在本教程中遇到了这个障碍,我学到了一些其他有用的东西。当本教程使用虚拟用户/组时,这也没有帮助。最终,您似乎也需要进行遍历,如上面的示例所示。我真的希望本教程在教程或烹饪书中为初学者提供了一个更详细的示例来展示authn和authz。有些人可能不同意,但无论如何,作为初学者,我很难理解金字塔的authn和authz,有一段时间我很想不使用金字塔,因为我无法前进。