我在处理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获取任意数量的参数。
答案 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函数,这可能不起作用,这很可能是它的工作原理。