我目前正在学习如何使用Python金字塔web框架,并且发现文档非常优秀。
然而,在区分“模型”(即在SQLAlchemy的声明系统下定义的类)和“资源”(即定义视图上的访问控制列表以便与金字塔的auth系统一起使用)时,我遇到了一个绊脚石。
我理解上面的语句似乎表明我已经理解了其中的区别,但是我很难理解我是应该创建模型资源(通过在模型类中直接添加__acl__属性)还是创建一个单独的资源类(它具有正确的__parent__和__name__属性),它表示对使用模型的视图的访问。
如有任何指导,将不胜感激。
发布于 2019-03-06 08:57:13
如果应用程序的域模型是分层的,那么金字塔提供了构建资源树的资源概念。遍历用于将URL映射到代码,并标识资源树中的资源。在使用关系数据库时,通常不使用资源和遍历。
在金字塔中,遍历是解析资源树中资源对象的URL路径的行为。有些人对这种观念感到不舒服,并认为这是错误的。谢天谢地,如果您使用的是金字塔,并且您不想用资源树来建模您的应用程序,那么您根本不需要使用它。相反,使用URL分派将URL路径映射到视图。 关系数据库并不是天生的层次结构,因此不可能像树一样遍历数据库。 您可以放心,如果您不想理解遍历,您就不必理解。您可以很高兴地构建只有URL分派的金字塔应用程序。
资源摘录
资源是表示与应用程序相关的树中的“位置”的对象。(...)资源树是一组嵌套的类似字典的对象,可以用来表示网站的结构。 在使用遍历将URL映射为代码的应用程序中,大量使用资源树结构将每个URL映射到可调用的视图。当使用遍历时,金字塔将遍历资源树,遍历其嵌套的字典结构,以找到上下文资源。找到上下文资源后,请求中的上下文资源和数据将用于查找可调用的视图。 在使用URL调度的应用程序中,资源树只被间接使用,并且对开发人员来说常常是“不可见的”。(...)此根资源有时会附加安全声明,但不需要任何安全声明。一般来说,在使用URL调度的应用程序中,资源树比使用遍历的应用程序要重要得多。
我认为这一主题在文档中得到了广泛的讨论。
我曾经推荐一个项目来强调金字塔的能力。
我的谦卑观点:你不需要完全理解两个概念和预先采取金字塔框架为你的第一个项目。当使用关系数据库时,请选择URL和SQLAlchemy。
从设计上看,金字塔并不是一个特别固执己见的网络框架。金字塔提供了其他web框架没有的一些特性。如果您正在构建一个简单的(.),这些特性是为用例准备的,可能对您没有意义。web应用程序
发布于 2019-02-26 17:26:28
我很难理解是否应该创建模型资源(通过在模型类中直接添加acl属性)还是创建单独的资源类
答案取决于您想要的耦合级别。对于一个简单的应用程序,为了简单起见,我建议使用模型资源。但是,对于一个复杂的应用程序,具有高度的内聚力和低水平的耦合,最好是将模型与资源分离。
https://stackoverflow.com/questions/54869002
复制相似问题