使用Flask(Python)在视图中返回多个值

时间:2016-10-14 01:36:39

标签: python flask views

我很难从广泛的角度理解这一点,但我会尽力解释,如果有什么不清楚,请评论以获取更多信息。

现在我有一个python函数,它从我工作场所中与每个工作者的用户名绑定的内部API中提取用户名和用户ID,然后将其路由到一个带有这样的表的网页。 (我使用用户名作为检索数据的主要方式,我猜它可以被认为是主键?)

@app.route('/user/<username>')
def issue(username)

    json = get_json(username)

    _user = get_username(json)
    _id = get_id(json)

    print "User: " + _user
    print "ID: " + _id

get_username()get_id()函数解析JSON文件并检索我需要的数据)

用户访问此页面的方式是在webapp的主页上有一个文本字段,他们输入用户名,然后将它们重定向到页面127.0.0.1:5000/user/username,这反过来又调用上面的函数。

这提供了一个非常简单的网页,其中只包含用户名和ID。但是,如何使用一个请求呈现多个名称和ID。

例如:

1. User goes to home page
2. User enters "John Doe, Harry Smith, Alex Boggs" into the text box and hit submit
3. They are then presented with this information

User: John Doe
ID: 127

User: Harry Smith
ID: 412

User: Alex Boggs
ID: 322

我不确定在哪里开始这样做,因为我真的只知道如何一次传递一个参数。

注意:理想情况下,数据实际上并不会绑定到网址,而只会在主页上的搜索框下方生成,但我会解决任何解决方案。

2 个答案:

答案 0 :(得分:1)

如果用户在文本框中输入John Doe, Harry Smith, Alex Boggs,那么您应该在Flask中获得John Doe, Harry Smith, Alex Boggs,并且必须将其"John Doe, Harry Smith, Alex Boggs".split(", ")拆分以获取名称列表。

现在,您可以使用for循环打印每个名称的用户,ID。

答案 1 :(得分:0)

使用&#34;路径&#34;这样的转换器@app.route('/something/<path:name_list>') 因此,当用户请求网址时:site/something/name1/name2/name3 你会得到一个名单

或者您可以通过创建转换器类来创建自己的转换器。

from werkzeug.routing import BaseConverter
class ListConverter(BaseConverter):
    def to_python(self, data):
         return data.split(',')

    def to_url(self, data)
         ','.join([BaseConverter.to_url(each) for each in data])

然后将此转换器添加到应用程序转换器dict中,如下所示:

app.url_map.converters['list']=ListConverter

现在您可以使用列表转换器来实现该功能:

app.route('/something/<list:name_list>')

用户可以请求以下网址:site/something/name1,name2,name3