如何扩展插件?

0 投票
2 回答
740 浏览
提问于 2025-04-29 18:43

请帮忙修复这个错误

在Django CMS中添加了一个插件叫做投票插件(polls),然后我尝试按照这个教程来扩展它。结果我的文件夹结构看起来像这样

问题是,当你尝试运行网站时,控制台显示了以下错误信息:

Traceback (most recent call last):
  File "/usr/lib/python2.7/wsgiref/handlers.py", line 85, in run
    self.result = application(self.environ, self.start_response)
  File "/home/kalinins/.virtualenvs/blogik4/local/lib/python2.7/site-packages/django/contrib/staticfiles/handlers.py", line 67, in __call__
    return self.application(environ, start_response)
  File "/home/kalinins/.virtualenvs/blogik4/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 187, in __call__
    self.load_middleware()
  File "/home/kalinins/.virtualenvs/blogik4/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 47, in load_middleware
    mw_instance = mw_class()
  File "/home/kalinins/.virtualenvs/blogik4/local/lib/python2.7/site-packages/django/middleware/locale.py", line 24, in __init__
    for url_pattern in get_resolver(None).url_patterns:
  File "/home/kalinins/.virtualenvs/blogik4/local/lib/python2.7/site-packages/django/core/urlresolvers.py", line 365, in url_patterns
    patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
  File "/home/kalinins/.virtualenvs/blogik4/local/lib/python2.7/site-packages/django/core/urlresolvers.py", line 360, in urlconf_module
    self._urlconf_module = import_module(self.urlconf_name)
  File "/home/kalinins/.virtualenvs/blogik4/local/lib/python2.7/site-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
  File "/home/kalinins/.virtualenvs/blogik4/blogik4/blogik4/urls.py", line 8, in <module>
    admin.autodiscover()
  File "/home/kalinins/.virtualenvs/blogik4/local/lib/python2.7/site-packages/django/contrib/admin/__init__.py", line 29, in autodiscover
    import_module('%s.admin' % app)
  File "/home/kalinins/.virtualenvs/blogik4/local/lib/python2.7/site-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
  File "/home/kalinins/.virtualenvs/blogik4/local/lib/python2.7/site-packages/cms/admin/__init__.py", line 11, in <module>
    plugin_pool.plugin_pool.discover_plugins()
  File "/home/kalinins/.virtualenvs/blogik4/local/lib/python2.7/site-packages/cms/plugin_pool.py", line 36, in discover_plugins
    load('cms_plugins')
  File "/home/kalinins/.virtualenvs/blogik4/local/lib/python2.7/site-packages/cms/utils/django_load.py", line 56, in load
    get_module(app, modname, verbose, failfast)
  File "/home/kalinins/.virtualenvs/blogik4/local/lib/python2.7/site-packages/cms/utils/django_load.py", line 40, in get_module
    module = import_module(module_name)
  File "/home/kalinins/.virtualenvs/blogik4/local/lib/python2.7/site-packages/django/utils/importlib.py", line 40, in import_module
    __import__(name)
  File "/home/kalinins/.virtualenvs/blogik4/blogik4/djangocms_polls/cms_plugins.py", line 17, in <module>
    plugin_pool.register_plugin(CMSPollPlugin)  # register the plugin
  File "/home/kalinins/.virtualenvs/blogik4/local/lib/python2.7/site-packages/cms/plugin_pool.py", line 87, in register_plugin
    % (plugin, template)
ImproperlyConfigured: CMS Plugins must define a render template (<class 'djangocms_polls.cms_plugins.CMSPollPlugin'>) that exists: djangocms_polls/poll_plugin.html
暂无标签

2 个回答

0

你需要在设置里定义一个模板列表,这个列表放在 CMS_TEMPLATES 这个变量里面。

然后... 把你现有的模板放到 djangocms_polls 这个子目录里,这样它就会在 djangocms_polls/templates/djangocms_polls/poll_plugin.html 这个位置。

0

你需要在你的模板文件夹里创建一个HTML模板。

在这个例子中,模板叫做 poll_plugin.html,它应该放在你注册的模板文件夹 djangocms_polls 里。

...
render_template = "djangocms_polls/poll_plugin.html"
..

这个模板是必须存在的,这样CMS插件才能正常工作。这个模板是插件用来展示数据的地方。

撰写回答