在prepare()函数中获取URL参数,而不是Get()/post()

2024-09-29 19:28:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是tornado,我声明了一个带有如下单个参数的RequestHandler:

class StuffHandler(RequestHandler):
    def get(self, stuff_name):
        ...

app = Application([
    (r'/stuff/(.*)/public', StuffHandler)
])

现在,我为'/stuff/(.*)/private'添加了另一个处理程序,它需要对用户进行身份验证:

^{pr2}$

这当然会导致get_current_user()get()之前被调用。问题是,为了让get_current_user()运行,我需要知道stuff_name参数。在

所以我想我可以使用prepare()initialize()方法,它在get_current_user()之前被调用。但是,我似乎无法从这些方法访问stuff_name。我试着把stuff_name作为一个参数,但是没有用,然后我试着调用self.get_argument("stuff_name"),但是也没有用。在

如何从prepare()方法访问URL参数?在


Tags: 方法nameself声明参数getdefcurrent
2条回答

我认为您可以使用self.request.path来获得完整路径,然后在path中获得所需的值。在

最后,我问了straight to Tornado developers,一个有帮助的用户让我注意到在类中的任何地方都有{a2}和{a3}。在

因此,从prepare()方法(甚至是get_current_user()方法),我可以做到:

stuff_name = self.path_args[0]

相关问题 更多 >

    热门问题