我很难从广泛的角度理解这一点,但我会尽力解释,如果有什么不清楚,请评论以获取更多信息。
现在我有一个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
我不确定在哪里开始这样做,因为我真的只知道如何一次传递一个参数。
注意:理想情况下,数据实际上并不会绑定到网址,而只会在主页上的搜索框下方生成,但我会解决任何解决方案。
答案 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