这里的新手,已经写了6个多月的Python脚本了。在
我试图用一个列表填充wtfselectfield,这个列表是从slackapi获取数据的函数返回的。该列表包含频道名称,我想将其设置为SelectField的选项。在
以下是我的功能代码:
def get_channels_list(slack_token):
sc = SlackClient(slack_token)
a = sc.api_call('channels.list',
exclude_archived=1,
exclude_members=1,)
a = json.dumps(a)
a = json.loads(a)
list1 = []
for i in a['channels']:
str1 = ("('%s','#%s')," % (i['name'],i['name']))
list1.append(str1)
return list1
它们的格式如下:
^{pr2}$我希望以这种格式将其传递到我的函数中:
('whoisdoingwhat','#whoisdoingwhat'),
('windowsproblems','#windowsproblems'),
('wow','#wow'),
('wp-security','#wp-security'),
下面是我们要讨论的代码:
class SlackMessageForm(Form):
a = get_channels_list(app.config['SLACK_API_TOKEN'])
channel = SelectField('Channel',
choices=[a],)
当然,ValueError: too many values to unpack
被抛出。
我怎样才能做到这一点?我觉得我离得很近,但却错过了一些东西。在
解决方案: 问题在于我错误地理解/不知道如何返回数据并因此将其传递到其他地方。在
在“我的获取频道”列表函数中修改了以下内容:
for i in a['channels']:
# str1 = ("('%s','#%s')," % (i['name'],i['name']))
list1.append((i['name'],'#'+i['name']))
这将返回元组列表。
现在我们将它作为参数传递给SelectField对象,不带方括号:
class SlackMessageForm(Form):
a = get_channels_list(app.config['SLACK_API_TOKEN'])
channel = SelectField('Channel',
choices=a,)
在
get_channels_list
函数的for
循环中不必要地创建字符串。在将其更改为:
或者更像Python:
^{pr2}$带工作窗体的HTML:
相关问题 更多 >
编程相关推荐