您好,我们一直在开发一个使用 CSV 输入创建类别的工具。在创建类别时,我们能够成功建立父子关系。但是,在应用类别设置时遇到了问题——它一直失败。如果您能就如何在创建新类别后应用类别设置(如下方列表所示)提供任何指导,我们将不胜感激。我们甚至尝试在应用设置前增加长达 40 秒的延迟,但仍然无效。
另外,我还想更新类别描述 :: update_about_post(category_id, description) # 仅更新描述。
另外,我想为类别添加两个额外的自定义字段,该如何添加?
更新类别设置的函数
def update_category_settings(category_id):
time.sleep(5) # 增加延迟以确保在应用设置前类别已完全创建
url = f"{DISCOURSE_URL}/categories/{category_id}"
data = {
"subcategory_list_style": "boxes", # 将子类别样式设置为“框”
"show_subcategory_list": True, # 在主题上方显示子类别列表
"allow_solved_on_category": True # 启用已解决功能
}
response = requests.put(url, json={"category": data}, headers=headers)
if response.status_code == 200:
print(f"已为类别 ID {category_id} 更新类别设置")
else:
print(f"未能为类别 ID {category_id} 更新设置:{response.status_code}, {response.text}")
simon
3
我没有用 Python 测试过它,但值得尝试使用字符串 \"true\" 而不是布尔值 True 来代替布尔参数。Discourse 会将字符串 \"true\" 和 \"false\" 解释为布尔值。
我假设您能够使某些 API 调用正常工作,只是在此特定调用上遇到麻烦。如果不是这种情况,请告知我们。
谢谢 Simon……你说得完全正确,我确实能让一些 API 调用工作起来……我能创建具有父子关系的类别……只是我无法添加描述详情和其他类别相关设置,无法让它们正常工作。
simon
5
我在本地论坛上尝试从命令行更新一些类别设置。这可以正常工作:
❯ curl -X PUT "http://localhost:4200/categories/10.json" \
-H "Api-Key: $api_key" \
-H "Api-Username: system" \
-H "Content-Type: multipart/form-data;" \
-F "show_subcategory_list=true" \
-F "subcategory_list_style='boxes'" \
-F "allow_badges=false"
如果无法正常工作,您可以尝试使用 \"true\" 而不是 True。
我认为这是预期的。要添加描述,您需要编辑类别的“关于”主题。不幸的是,我认为“关于”主题的 URL 不会从对类别 URL 的请求中返回(例如 http://localhost:4200/categories/10.json)。不过,您可以从您网站的 categories/json URL 中获取它。包含“关于”主题 URL 的字段称为 topic_url。例如:\"topic_url\":\"/t/about-the-general-category/3\"。
所以,除非有我没看到更简单的方法,否则您需要向 /categories.json 发出请求,获取您感兴趣的类别的 topic_url,然后发出 API 请求来编辑该主题的第一个帖子。