我目前正在实施为现有的Pyramid应用程序添加一些API端点。我们在整个项目中使用traversal所以我受此限制。
在我们的遍历中,我们到达User
个对象。它们具有__getitem__
方法,允许按ID或用户名检索用户。现在我需要添加一种方法来返回“我”,即经过身份验证的用户(身份验证是事先完成的,我们可以假设用户已经过身份验证)。
最好的方法是什么?由于这是在遍历期间完成的,因此我不会通过用户附加的Request
对象。我不能使用简单的URL映射,因为遍历需要在用户下面继续。
目前我正在使用pyramid.threadlocal.get_current_request()这些文档清楚地说明,如果我可以避免它,我不应该使用它。问题是:我可以吗?
答案 0 :(得分:0)
您可以从根工厂传递请求对象:
观察我当前应用的根工厂:
def RootFactory(request):
if "debug_toolbar" in request.path or "/static/" in request.path:
return
request.user = UserObject(request)
return BootmapLoader(slug='',page=home_page,request=request)