新手在这里,编写Python脚本的时间超过6个月。
我尝试使用列表填充wtf SelectField,该列表是从从Slack API获取数据的函数返回的。该列表包含通道名称,我想将其设置为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
他们采用以下格式:
[u"('whoisdoingwhat','#whoisdoingwhat'),",
u"('windowsproblems','#windowsproblems'),",
u"('wow','#wow'),",
u"('wp-security','#wp-security'),",]
我希望以这种格式传递给我的函数:
('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
被抛出
我怎么能做到这一点?我觉得我非常接近但却缺少一些东西。
解决方案: 问题在于我对数据如何返回并因此传递到其他地方的错误理解/无知。
在我的get_channels_list函数中修改了以下内容:
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,)