jucajuca
(Juan Carlos)
1
您好,我正在尝试使用 API 端点删除主题。
我可以删除“普通”主题,但遇到了一个问题,即默认主题无法删除。那个叫做“关于 ________ 类别”的主题。
{{baseUrl}}/t/{{id}}.json
这是我的问题:
- 如何使用 API 删除此主题?
- 如何使用 API 识别该主题以便跳过它?
示例
url = base_url + "/c/" + slug + "/22.json"
response = requests.request("GET", url, headers=headers, data=payload)
for topic in response.json()["topic_list"]["topics"]:
# 删除每个主题
url = base_url + "/t/topic_id.json".replace("topic_id", str(topic["id"]) )
response = requests.request("DELETE", url, headers=headers, data=payload)
Lilly
(Lillian Louis)
2
您可以将类别描述主题设置为“未列出”。我为我的所有类别都这样设置。我怀疑您可以通过 API 识别未列出的主题?
3 个赞
Canapin
(Coin-coin le Canapin)
3
您能分享一下为什么要删除这些主题吗?这些是特殊主题,不能也不会被删除。
如果您的目标是删除所有主题,然后删除类别,您可以删除类别而不删除“关于”主题。
当人们想以某种方式摆脱“关于”主题时,按照 @Lilly 的建议取消列出它们是可行的方法。
我认为这些帖子没有任何独特的属性。它们被识别为来自 category 表的特殊主题,通过 topic_id 列。
您可以使用 /c/{id}/show.json 端点获取它们:https://docs.discourse.org/#tag/Categories/operation/getCategory。
查找 topic_url 键。
例如:
https://meta.discourse.org/c/7/show.json
"topic_url": "/t/about-the-dev-category/1026"
如果这能引起您的兴趣,这里有一些更技术性的信息。
删除保护
在这里:discourse/lib/guardian/topic_guardian.rb at 7ecaf6295daf8759aa98d00e7035c4dc0f853303 · discourse/discourse · GitHub
这里定义了使用的方法:discourse/app/models/topic.rb at 7ecaf6295daf8759aa98d00e7035c4dc0f853303 · discourse/discourse · GitHub
2 个赞