You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django CMS插件中搜索所有文本并替换指定字符串

Django CMS Text Plugins 文本存储与批量替换方案

存储位置

  • 默认Text Plugin的文本存在cmsplugin_text表,核心字段是body,存的是HTML格式的富文本内容。
  • 要是你自己定义了Text Plugin,对应的表就是自定义模型生成的(比如myapp_customtextplugin),找你模型里定义的内容字段就行,一般也是body。

查找目标字符串

数据库直接查询

用SQL语句快速检索:

SELECT * FROM cmsplugin_text WHERE body LIKE '%目标字符串%';

自定义插件就把表名换成你自己的。

Django Shell查询

到项目根目录运行python manage.py shell,然后执行:

from cms.plugins.text.models import Text

# 筛选包含目标字符串的插件实例
text_plugins = Text.objects.filter(body__contains='目标字符串')
# 查看结果片段
for plugin in text_plugins:
    print(f"插件ID: {plugin.id}, 内容片段: {plugin.body[:200]}...")

批量替换字符串

Django Shell批量更新

同样进shell操作(先备份数据!):

from django.db.models import F, Value
from django.db.models.functions import Replace
from cms.plugins.text.models import Text

updated_num = Text.objects.filter(body__contains='旧字符串').update(
    body=Replace(F('body'), Value('旧字符串'), Value('新字符串'))
)
print(f"成功更新{updated_num}条记录")

数据库直接更新

执行SQL语句(务必先备份!):

UPDATE cmsplugin_text SET body = REPLACE(body, '旧字符串', '新字符串') WHERE body LIKE '%旧字符串%';

重要提醒

  • 不管用哪种方法,操作前一定要备份数据库,避免误改丢数据。
  • 富文本内容里可能有HTML标签,替换时注意别破坏标签结构,比如别把<p>这类标签误替换了。
  • 如果站点支持多语言,要确认是否需要按语言过滤,比如加上WHERE language = 'zh-cn'这类条件。

内容的提问来源于stack exchange,提问作者Anthony Elliott

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 06:55:14