Django-CMS` render_model` templatetag问题

时间:2015-10-10 22:54:37

标签: python django django-cms

我正在尝试利用模板中的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方法。

0 个答案:

没有答案