我有一个 RootFactory 定义如下:
class RootFactory(object):
__parent__ = None
__name__ = None
def __init__(self, request):
self.request = request
def __getitem__(self, key):
if key == "user":
dispatch = UserSelector(self.request)
dispatch.__name__ = key
dispatch.__parent__ = self
return dispatch
class UserSelector(object):
__parent__ = None
__name__ = None
def __init__(self, request):
self.request = request
def __getitem__(self, key):
dispatcher = UserDispatcher(self.request)
dispatcher.__name__ = key
dispatcher.__parent__ = self
return dispatcher
class UserDispatcher(object):
__parent__ = None
__name__ = None
def __init__(self, request):
self.request = request
def __getitem__(self, key):
user = self.request.db.query(User)
user = user.get(key)
if not user:
raise KeyError
dispatcher = UserDispatcher(self.request)
dispatcher.__name__ = key
dispatcher.__parent__ = self
dispatcher.user = user
return dispatcher
这是来自我继承的一个项目,我正试图弄清楚它是如何工作的。该项目是一个 sql alchemy 脚手架。因此,当一个GET
请求进入时,创建localhost:6543/user
一个实例RootFactory
并执行该__getitem__
方法。这将返回一个UserSelector
.
是什么原因导致__getitem__
执行UserSelector
?
此外,如果请求是一个PUT
或POST
什么实例化了该UserDispatcher
对象?
在 myUserViews
UserDispatch
中作为PUT
请求的上下文传递。当我尝试发送时,PUT
我得到404 The resource could not be found. predicate mismatch
了查看UserViews (request_method = GET,HEAD)
。谓词在这里指的是什么?
PUT 数据有问题吗?