如何将Django CMS插件类拆分到多文件而非仅存于cms_plugins.py中?
解决Django CMS插件放在
cms_plugins文件夹不生效的问题 Django CMS 默认仅会自动加载每个 app 根目录下的 cms_plugins.py 文件,如果你想用文件夹管理多个插件,需要手动完成模块导入配置,具体步骤如下:
1. 确认文件夹结构
确保你的 app 目录符合 Python 包规范:
your_app/ __init__.py models.py # 插件对应的模型(若有) cms_plugins/ __init__.py ThePlugin.py # 你的插件文件 # 可添加更多插件文件,比如AnotherPlugin.py
2. 在cms_plugins/__init__.py中导入插件类
打开cms_plugins/__init__.py,将各个插件文件中的插件类导入进来。比如ThePlugin.py中定义了MyFirstPlugin,就添加:
from .ThePlugin import MyFirstPlugin # 若有其他插件文件,继续导入对应类 # from .AnotherPlugin import MySecondPlugin
3. 检查插件文件的代码正确性
确保ThePlugin.py里的插件类正确继承并注册:
from cms.plugin_base import CMSPluginBase from cms.plugin_pool import plugin_pool from django.utils.translation import gettext_lazy as _ from your_app.models import MyPluginModel # 替换为你的插件模型 class MyFirstPlugin(CMSPluginBase): name = _("我的第一个插件") model = MyPluginModel render_template = "your_app/plugin_templates/my_first_plugin.html" # 可添加缓存、权限等其他配置 plugin_pool.register_plugin(MyFirstPlugin)
4. 重启开发服务器
修改配置后必须重启 Django 开发服务器,新插件才能被加载识别。
常见排查点
- 确认你的 app 已添加到
settings.py的INSTALLED_APPS中 - 检查文件名和导入语句的大小写(Python 对大小写敏感)
- 确保插件类的
model属性指向正确的模型类(若使用模型)
内容的提问来源于stack exchange,提问作者Cedric Rabarijohn
相关产品推荐
相关产品推荐

