如何在Django CMS中移除插件?移除FAQPlugin遇KeyError问题
解决Django CMS移除FAQPlugin后出现KeyError的问题
问题原因
即便页面中已看不到该插件,数据库内仍可能存在残留的FAQPlugin实例记录——比如草稿页面、历史版本,或是cmsplugin表中未清理的关联数据。Django CMS加载页面时会尝试匹配已注册的插件类,找不到对应类就会抛出KeyError。
解决步骤
1. 清理数据库中的插件记录
- 先查询
cmsplugin表是否存在FAQPlugin相关记录:SELECT * FROM cmsplugin WHERE plugin_type = 'FAQPlugin'; - 若存在,直接删除这些记录:
DELETE FROM cmsplugin WHERE plugin_type = 'FAQPlugin'; - 若不再需要FAQ模型数据,可同步清理关联表(替换
your_app_faq为实际数据表名):DELETE FROM your_app_faq WHERE id NOT IN (SELECT object_id FROM cmsplugin WHERE plugin_type = 'FAQPlugin');
2. 清理页面草稿与历史版本
- 登录Django CMS后台,检查所有页面的草稿版本和历史版本,手动删除残留的FAQPlugin实例;
- 页面数量较多时,可通过Django Shell批量处理:
from cms.models import CMSPlugin # 筛选并删除所有FAQPlugin实例 CMSPlugin.objects.filter(plugin_type='FAQPlugin').delete()
3. 清理缓存
即使插件设置了cache=False,仍可能存在缓存残留,执行命令清理:
python manage.py clearcache
若使用Redis、Memcached等外部缓存,直接重启服务或清空缓存数据即可。
4. 验证修复
重启Django服务后,访问/en/product/路径,确认KeyError是否已解决。
内容的提问来源于stack exchange,提问作者unriale
相关产品推荐
相关产品推荐

