Python向Joomla API发送JSON格式HTML内容遇取值问题
解决方法
从你给出的article打印结果来看,它是一个只包含1个元素的列表,里面的元素是MessageContentText对象,你要的HTML内容嵌套在text.value属性里,之前的取值方式错误导致列表类型报错,正确的提取步骤如下:
- 先取列表的第一个元素(索引为0)
- 访问该元素的
text属性,得到内部的Text对象 - 最后取
Text对象的value属性,就是你需要的HTML内容
修改后的Python代码示例:
# 导入html模块(如果需要转义HTML实体的话) import html # 正确提取HTML内容 # 如果API需要原始HTML(把<转成<这类实体),就用html.unescape处理 html_content = html.unescape(article[0].text.value) # 如果API接受转义后的实体,直接用article[0].text.value即可 # 构造请求数据 data = { 'title': blog_post_idea, 'alias': slug, 'articletext': html_content, 'catid': '0', 'language': '*' }
错误原因说明
article["value"]:article是列表类型,不是字典,不能用键名取值article[1]:列表仅包含1个元素,索引范围是0,访问索引1会触发越界报错
另外关于Base64解码:如果Joomla API要求内容用Base64编码,你可以用base64.b64encode(html_content.encode()).decode()把HTML转成Base64字符串再赋值给articletext,不过建议优先尝试直接传递原始/转义后的HTML,不行再考虑编码。
内容的提问来源于stack exchange,提问作者landed
相关产品推荐
相关产品推荐

