【问题标题】:Django cms display plugin data in templateDjango cms 在模板中显示插件数据
【发布时间】:2014-07-18 08:48:19
【问题描述】:

我已经创建了自定义事件插件,现在我想在我的主页上显示最近的事件(带有 home.html 模板的 django-cms 页面)。 我该怎么做?这是我的事件/models.py

from django.core.urlresolvers import reverse
from django.db import models

from adminsortable.models import Sortable
from easy_thumbnails.fields import ThumbnailerImageField
from cms.models.fields import PlaceholderField
from cms.models.pluginmodel import CMSPlugin


class Event(Sortable):
    class Meta:
        app_label = 'event'


    event_name = models.CharField(
        blank=False,
        default='',
        max_length=64,
    )

    date = models.DateField(
        auto_now=False, 
        auto_now_add=False,
    )

    photo = ThumbnailerImageField(
        upload_to='events',
        blank=True,
        )

    def __unicode__(self):
        return self.event_name

【问题讨论】:

  • 我创建了views.py,然后在模板{{ event.name }}中,但它在cms模板中不起作用。
  • 您是否将插件实例添加到占位符?
  • 不,我找到了这个django-cms.readthedocs.org/en/latest/extending_cms/… 我需要这样的东西,但我不知道如何正确地做到这一点
  • 插件需要添加到占位符才能显示它们。在 Django admin 的 CMS 中编辑页面时,将插件实例添加到页面中的占位符之一,发布更改,它应该会显示出来。
  • 我知道,但我现在不知道如何创建只显示最近事件的插件。我已经创建了 Event 应用程序 - 它在 /events 页面上显示所有事件。

标签: django django-cms


【解决方案1】:

要获取最新事件,您可以覆盖插件的render 方法:

class YourCMSPlugIn(CMSPluginBase):
    model = Event
    ...

    def render(self, context, instance, placeholder):
        context.update({
            'latest_event': self.model.objects.all()[:1],
            'placeholder': placeholder
        })

        return context

请参阅:http://docs.django-cms.org/en/latest/extending_cms/custom_plugins.html#storing-configuration 了解更多信息。

【讨论】:

  • 我收到此错误:NoReverseMatch at /sk/test/ Reverse for 'cms_usersettings_change' with arguments '()' and keyword arguments '{}' not found.尝试了 0 个模式:[]
  • 听起来您正在尝试将 CMS 页面与自定义视图挂钩?如果有,您是否有 CMS 应用实例?
  • 修复了它,但得到了这个:SubClassNeededError:CMSPluginBase 子类上的“模型”属性必须是 CMSPlugin 或 CMSPlugin 的子类。 上的 不是。
  • 你的Event 类需要扩展CMSPlugin
猜你喜欢
  • 2012-09-24
  • 2019-09-03
  • 2011-06-12
  • 1970-01-01
  • 2012-05-26
  • 2012-03-18
  • 2016-04-20
  • 2014-06-25
  • 2014-11-12
相关资源
最近更新 更多