【发布时间】:2015-05-27 20:58:06
【问题描述】:
我正在开始使用 Pyramid,并且对将遍历作为路由策略感到兴奋。它看起来自然而有力。然而,我的想法使我走上了一条可疑的道路。你能推荐一个更好的模式吗?
我正在尝试实现一些 RESTful 路由。例如,我想映射以下内容:
- GET /users -> 索引
- GET /users/chris -> 显示
- GET /users/new -> 新
- POST /users -> 创建
- PUT /users/chris -> 更新
- 删除 /users/chris -> 销毁
show 和 update 操作的最终上下文似乎应该是 User 的适当实例,但是 index 和创建?看起来 User 类本身就是一个合适的上下文,但是遍历机制,__getitem__ 方法,不能在没有一些元类魔法的类上实现。似乎有一种更清洁的方法可以做到这一点。显然我可以创建一个 UserResourceContainer ,它唯一的工作就是处理遍历,但我被使用 User 类的优雅所吸引。想法?
【问题讨论】:
-
您打算如何实现 /users 资源而不将其描述为某种容器?这对我来说似乎是最明显的解决方案。就“元类魔法”而言,恐怕我不会遵循,您可以将
__getitem__方法添加到任何类定义中,您不能在没有一些技巧的情况下将其动态添加到对象实例中,但这很少见你会想要这样做。 -
我正在考虑使用 User 类(作为单例)作为容器。困难在于将 getitem 实现为类方法(使用 @classmethod 装饰器)是not trivial。
标签: python pyramid traversal magic-methods