可以在webpy中获取(self,arg)除了self之外还有多个参数吗?

时间:2018-01-27 17:08:01

标签: python get web.py

我在处理GET(self,arg)如何从URL中获取参数时遇到了一些麻烦。

我找不到任何关于webpy的完整文档或参考资料。 根据我的理解,webpy根据我们定义的规则从URL中获取参数:

urls = ( '/something/(.*), 'some_class' )

因此,如果我们提供类似http://server.com/something/item的网址,则GET的参数将为item

我尝试了以下方法,但没有奏效:

  • urls = ( /something/(.*), 'some_class' )GET(self,arg1,arg2)http://server.com/something/item1/item2
  • urls = ( /something/(.*)/(.*), 'some_class' )GET(self,arg1,arg2)http://server.com/something/item1/item2

那么,背景中会发生什么,以及定义GET应如何接受它的参数的规则是什么。除了自我之外只需要一个论点吗?

更新 实际上,第二个例子有效。所以,我认为就是这样。 GET可以从URL获取任意数量的参数。

2 个答案:

答案 0 :(得分:1)

GET从URL中获取与捕获相同数量的参数(加上#34; self")。如果你捕获两个位/something/(.*)/(.*),那么GET将获得自己的+2个参数。

如果您想使用两组不同的网址但使用相同的GET()处理,则可以使用默认值。

您还可以在网址中匹配(但不能捕获) - 如果您想匹配网址,但不需要将部分传递给您的GET()。

例如支持网址/(dog|cat|pig)/([0-9]+),它将使用相同的GET函数处理URL / dog / 1,/ cat / 45,/ pig / 123:GET(self, animal, code)。两个捕获,两个(加上#34; self")值。

也许你不需要传递第一位(因为你以同样的方式处理这三种动物中的任何一种),所以改为url /(?:dog|cat|pig)/([0-9]+)。然后使用GET(self, code)。这对于允许使用不同函数处理/ zebra / 234很有用。一个捕获,一个(加上#34; self")值。

答案 1 :(得分:0)

我没有web.py的经验,但如果第二个值提供默认值就没问题。

....
def GET(self, arg1, arg2 = None):
    ....

如果web.py实际上只将一个参数传递给GET函数,这可能不起作用,这很可能是它的工作原理。