1

我有字典列表:

{'associations': [{'host1': ['v1','v2']}, {'host2': ['v2,v3']}, {'host3': ['v1', 'v7']}]}

我试图通过使用 atlassian-python-api 模块以 YAML 格式将字典列表传递给汇合页面:

confluence_data = yaml.safe_dump(confluence_data['associations'], encoding='utf-8', allow_unicode=True)

    confluence = Confluence(
        url='https://confluence-url',
        username='user',
        password='password')

    status = confluence.update_or_create(parent_id=someid, title='Test page', body=confluence_data, representation='storage')

但它的出版没有关于汇合的新行。

我尝试使用 pprint 添加新行,但它也没有帮助,因为在这种情况下它会发布空页面:

confluence_data = pprint.pprint(confluence_data, width=1)

我在这里做错了什么?

4

1 回答 1

1

我没有资源直接使用 Confluence 实例对此进行测试,但是如果您省略 utf-8 编码,您应该会收到一个字符串。从atlassian-python-api 文档中,我了解到您可以直接使用带有字符串的 body 参数作为值。

试试这个:

confluence_data = yaml.safe_dump(confluence_data['associations'], allow_unicode=True)

如果这没有帮助,因为 atlassian-python-api 可能无法正确处理 \n,您可以尝试修改字符串,然后将其交给 confluence,方法是将字符串的每一行放在以下 HTML 标记中:<p>line</p>

例如(您可以使用列表推导来使其更简洁):

new_confluence_data = ""
confluence_data_lines = confluence_data.splitlines()
for line in confluence_data_lines:
    line = "<p>" + line + "</p>"
    new_confluence_data += line

然后在你的调用中用 new_confluence_data 替换 confluence_data 变量:

status = confluence.update_or_create(parent_id=someid, title='Test page', body=new_confluence_data, representation='storage')

希望这有助于或至少让您走上正轨!

于 2019-08-09T17:27:37.413 回答