使用Python调用Atlassian API创建Confluence页面报错如何解决
问题1答复:是否需要先创建对应space?
是。Confluence中所有页面必须归属到一个已存在的空间下,你代码中指定的TEST空间不存在,是触发本次报错的直接原因。你可以选择两种方式修复:
- 提前在Confluence中创建key为
TEST的空间,并确认你有该空间的页面创建权限 - 将代码中
space参数修改为你已有权限、且真实存在的空间key
其他可能触发该报错的常见原因
- 同层级标题重复:目标父页面下已经存在标题为
Made by Python的页面,Confluence默认不允许同父级下的页面标题完全重复。可以添加update_existing=True参数覆盖已有页面,或者修改为不重复的标题 - 空间与父页面不匹配:传入的
parentId所属的空间和代码中指定的space参数不一致,比如父页面属于DEV空间,你指定写入TEST空间就会触发报错。建议先查询父页面所属的空间key,和代码参数保持一致 - 内容格式不符合要求:
body参数需要传入标准HTML格式内容,直接传入纯文本在部分版本的Confluence实例中会被拒绝。可以把纯文本内容包裹在<p>标签中传入 - 权限不足:虽然你有父页面的写入权限,但如果对代码中指定的空间没有页面创建权限,也会触发该报错,需要确认你对目标空间有对应权限
- SDK版本兼容问题:旧版本的
atlassianPython SDK参数规则存在差异,可以尝试升级SDK到最新版本后重试:pip install --upgrade atlassian-python-api
修复后参考代码
from atlassian import Confluence def writeConfluencePage(confluenceBaseUrl,parentId,user,password): # 连接Confluence confluence = Confluence(url=confluenceBaseUrl, username=user, password=password) # 查询父页面所属空间,自动匹配避免参数不匹配 parent_page_info = confluence.get_page_by_id(parentId) target_space_key = parent_page_info['space']['key'] # 创建页面,增加兼容参数 status = confluence.create_page( space=target_space_key, parent_id=parentId, title='Made by Python', body='<p>This is the body</p>', update_existing=True ) print(status)
内容的提问来源于stack exchange,提问作者Michael Hecht
相关产品推荐
相关产品推荐

