我很难理解如何从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中编写路由代码?
答案 0 :(得分:5)
您的视图需要关注的URL有两个部分:URL路径和查询字符串。您的示例都是只是路径元素,实际上,查询字符串是?
之后的所有内容。
这实际上取决于您的Web应用程序应该如何与之交互; URL通常表示一个资源,查询字符串表示对该资源的查询。
将/users/102324
与/users?name=Joe+Soap
进行比较;前者表示一个用户(标识为102323
,后一个URL用于所有用户,但包括搜索匹配给定名称的用户。
路径是您与路由配置匹配的部分;它完全匹配你的模式;对于您的两个示例,foo
和bar
占位符捕获所有内容(/
字符除外);因此,您的网址都可以使用,只会导致foo
和bar
的值不同:
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')