3

运行全新安装的 django-cms 2.4.0-RC1、django 1.5.1 和 python 2.7。我正在尝试使用单个字段创建一个非常简单的自定义插件。该插件在管理员中注册并且工作正常。它成功存储在数据库中。它只是没有在我的模板中呈现。

我已经验证了 render_template 路径并尝试使用硬编码的绝对路径。我尝试过覆盖 CMSSelectDegreeLevelPlugin 中的渲染方法。

我是否忽略了一些明显的东西?我之前做过非常相似的插件(在不同版本的 django-cms 中)并且没有遇到任何问题。

模型.py:

from cms.models.pluginmodel import CMSPlugin
from django.db import models


class SelectDegreeLevel(CMSPlugin):
    degree_level = models.CharField('Degree Level', max_length=50)

cms-plugins.py

from cms.plugin_base import CMSPluginBase
from cms.plugin_pool import plugin_pool
from django.utils.translation import gettext_lazy as _
from models import SelectDegreeLevel


class CMSSelectDegreeLevelPlugin(CMSPluginBase):
    model = SelectDegreeLevel
    name = _('Degree Level')
    render_template = "cms/plugins/select_degree_level.html"

plugin_pool.register_plugin(CMSSelectDegreeLevelPlugin)

select_degree_level.html

<h1>static text test {{ instance.degree_level }}</h1>
4

1 回答 1

0

我认为你的领域不在上下文中。我通常通过这种方式进行操作。将此功能添加到您的 CMSSelectDegreeLevelPlugin 类

# Way to decide what comes in the context
def render(self, context, instance, placeholder):
        extra_context = {
            'degree_level': instance. degree_level,
        }
        context.update(extra_context)
        return context

# Simplest Way
def render(self, context, instance, placeholder):
    context['instance'] = instance
    return context

您也可以在文档中阅读更多信息

于 2013-04-17T14:55:39.923 回答