我可以让CMSPluginBase类方法直接返回自定义插件的HTML吗?

时间:2016-05-23 22:40:51

标签: django django-cms djangocms-text-ckeditor

我想创建一个Django CMS插件,主要用作TextPlugin(djangocms-text-ckeditor)的子节点。它旨在返回指向应用程序页面的链接。

为此,我按照doc中的描述对CMSPluginBase进行了子类化。看来CMSPluginBase依赖于每个插件都有自己的模板。

我是否必须拥有template.html文件,或者我是否可以为CMSPluginBase子类编写一个直接返回呈现的html的方法(本质上非常简单,如'<a href="/some/page">App link</a>')并避免调用模板要呈现?

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

想出来!

似乎render_template不一定是字符串。它也可以是django.template.Template个实例。所以,我们走了:

from django.template import Template

class MyLinkPlugin(CMSPluginBase):
    render_template = Template('<a href="{{link}}">{{anchor}}</a>')
    def render(self, context, instance, placeholder):
        context['link']='http://google.com'
        context['anchor'] = 'Google me'
        return(context)