API 与表单:编辑时内容不匹配

您好,

我刚注意到,当我使用 posts.json API 发布 HTML 内容,然后编辑帖子时,我在帖子内容中看到了 HTML。

帖子显示方式:

点击编辑时:

API 请求:

当我直接通过表单发布时,编辑时没有显示 HTML(显示方式相同):

如何避免在编辑帖子时出现 HTML 内容?

谢谢 :slight_smile:

1 个赞

您好 Luicid :wave:
内容(在编辑器中显示)接受 HTML 标签数组,因此它将以纯文本形式显示它们。

如果您想在不使用 <br> 标签的情况下添加换行符,请改用 \n:slight_smile:

第一行\n新行

如果您想创建两个段落,则需要添加额外的换行符:

第一行\n\n新行

编辑这些消息不会显示任何 <br> 标签。

注意:段落会在帖子处理时根据上下文自动创建,因此无需在查询的原始输入中添加这些标签。

4 个赞

你好,Canapin :slight_smile:

好的,我明白了。所以,如果我理解正确的话,当用户通过 API 编辑他们迁移的 HTML 帖子时,要获得干净的显示效果,唯一的选择是将所有的 <p><br> 标签替换为 \n,对吗?

谢谢

2 个赞

如果您尝试清理一些导入的 HTML 内容,我认为您可以将段落替换为换行符,这样您就可以确保有换行符,并且帖子将得到正确处理。

<p>some text</p><p>some other text</p>

将变成:

\nsome text\n\nsome other text\n

并将呈现为:


some text

some text


3 个赞

好的,谢谢 :slight_smile:
最后一个问题:
有没有办法通过 API 添加提及(mention),就像这样:@Canapin,到一个帖子中?我尝试在 raw 字段中使用 @username,但它不起作用。

请确保您发送的是 JSON 负载。

{
    "raw": "提及测试:@canapin",
    "topic_id": 86,
    "reply_to_post_number": 3
}

结果是一个有效的提及:

如果您要导入大量数据,则应使用导入脚本。其中许多脚本都包含有关去除 HTML 以及处理引号和提及的示例。

如果您想持续向现有网站添加数据,请使用 API。

1 个赞

啊,我明白了我的错误!我之前用的是小写用户名进行测试,而不是使用完全匹配的大小写用户名,因为提及是区分大小写的。抱歉。

感谢您花时间帮助我!:wink:

祝您有美好的一天!

老实说,我用一个 Ruby 脚本创建了一个 POC,但由于我需要同步旧解决方案和 Discourse 之间几天的_数据,我更倾向于运行一个简单的 Python 脚本。它更容易设置和维护。此外,它是一致的,因为我用 Python 抓取旧数据。之前的提供商不会给我们数据库访问权限,所以我将所有内容抓取到了一个数据库中。

当然,如果这是一个简单的迁移,那将是一个更好的解决方案 :slight_smile:

即使我们更改了大小写,提及也应该可以正常工作:

image

你帖子中的截图使用了 form-data。你应该使用带有 JSON 格式的原始字段。 :slight_smile:

2 个赞

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.