在请求字符串中路由多个变量

时间:2014-06-20 18:40:13

标签: python flask

我很难理解如何从flask中的请求字符串中获取变量。我非常确定这种语法是错误的,但有人可以帮我理解如何从请求字符串中获取多个变量吗?

@restServer.route('/end_point/<foo>&<bar>')
def like_provider(self,foo,bar):

发送数据时我应该使用哪种语法?

http://url/foo&bar

OR

http://url/var=foo&var2=bar

在第二种情况下,我如何在Flask中编写路由代码?

1 个答案:

答案 0 :(得分:5)

您的视图需要关注的URL有两个部分:URL路径和查询字符串。您的示例都是只是路径元素,实际上,查询字符串是?之后的所有内容。

这实际上取决于您的Web应用程序应该如何与之交互; URL通常表示一个资源,查询字符串表示对该资源的查询。

/users/102324/users?name=Joe+Soap进行比较;前者表示一个用户(标识为102323,后一个URL用于所有用户,但包括搜索匹配给定名称的用户。

路径是您与路由配置匹配的部分;它完全匹配你的模式;对于您的两个示例,foobar占位符捕获所有内容(/字符除外);因此,您的网址都可以使用,只会导致foobar的值不同:

http://url/end_point/foo&bar  -> {'foo': 'foo', 'bar': 'bar'}
http://url/end_point/var=foo&var2=bar  -> {'foo': 'var=foo', 'bar': 'var2=bar'}

但您通常在网址路径中使用&

另一方面,查询字符串被解析为键值对,可以使用request.query object访问:

@route('/end_point')
def like_provider(self):
    foo = request.args.get('foo')
    bar = request.args.get('bar')