在遍历期间使用请求

时间:2014-04-25 08:24:02

标签: python pyramid

我目前正在实施为现有的Pyramid应用程序添加一些API端点。我们在整个项目中使用traversal所以我受此限制。

在我们的遍历中,我们到达User个对象。它们具有__getitem__方法,允许按ID或用户名检索用户。现在我需要添加一种方法来返回“我”,即经过身份验证的用户(身份验证是事先完成的,我们可以假设用户已经过身份验证)。

最好的方法是什么?由于这是在遍历期间完成的,因此我不会通过用户附加的Request对象。我不能使用简单的URL映射,因为遍历需要在用户下面继续。

目前我正在使用pyramid.threadlocal.get_current_request()这些文档清楚地说明,如果我可以避免它,我不应该使用它。问题是:我可以吗?

1 个答案:

答案 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)