我正在尝试利用模板中的render_model
模板标签获取Django-CMS中的自定义插件。我已经关注了文档和其他插件示例,但是在将插件添加到页面时我仍然遇到错误。我显示的堆栈跟踪以pluginmodel.py
:
File "/vendor/python/lib/python2.7/site-packages/cms/models/pluginmodel.py" in get_breadcrumb
406. breadcrumb.append({'title': force_text(self.get_plugin_name()), 'url': url})
Exception Type: TypeError at /
Exception Value: 'unicode' object is not callable
在get_plugin_name
(我的模型的一个实例)上调用self
似乎会引发错误。可能是什么导致了这个?任何见解都将不胜感激。
作为参考,我使用的是Python 2.7,Django 1.7和Django-CMS 3.1.3。这是我到目前为止定义的精简版本:
models.py
@python_2_unicode_compatible
class PageBlock(CMSPlugin):
content = HTMLField()
def __str__(self):
return Truncator(strip_tags(self.content)).words(3, truncate="...")
cms_plugins.py
class PageBlockPlugin(CMSPluginBase):
model = models.PageBlock
name = _("Page Block")
render_template = "some_template.html"
def render(self, context, instance, placeholder):
context["instance"] = instance
return context
plugin_pool.register_plugin(PageBlockPlugin)
admin.py
class PageBlockAdmin(FrontendEditableAdminMixin, admin.ModelAdmin):
pass
admin.site.register(models.PageBlock, PageBlockAdmin)
some_template.html
{% load cms_tags %}
{% render_model instance "content" %}
{{instance.content | safe}}
似乎工作得很好,但我看过的每个例子都使用了render_model
方法。