Django CMS 插件上下文与页面上下文

don*_*yor 3 django django-cms

我有一个新闻页面,在 中news.detailpage,我在一个小列中还有另外 4 个项目(新闻、视频等),作为名为 的模型的 cms_plugin CrossItems

在此输入图像描述

问题是,cms_plugin 的上下文可以包含 中所示的新闻news.detailpage

我担心的是,我无法从 cms_plugins 上下文访问页面上下文,否则我可以轻松过滤掉新闻。

有没有什么方法可以实现这一点,以便这 4 个项目不包含左侧显示的实际新闻?

mis*_*bah 5

像这样的事情怎么样..

在你的cms_plugins.py中

如果你想要 current_page:

def render(self, context, instance, placeholder):
    context = super(CrossItemsPlugin, self).render(context, instance, placeholder)
    request = context['request']
    page = request.current_page

   # your logic goes here
Run Code Online (Sandbox Code Playgroud)

如果你想要当前的“文章”......你需要在你的views.py中设置它

def get_context_data(self, **kwargs):
    context = super(NewsDetailView, self).get_context_data(**kwargs)
    setattr(self.request, 'current_article', self.object)
    return context
Run Code Online (Sandbox Code Playgroud)

您可以在插件渲染方法中访问它。

def render(self, context, instance, placeholder):
    context = super(CrossItemsPlugin, self).render(context, instance, placeholder)
    request = context['request']
    article = request.current_article
Run Code Online (Sandbox Code Playgroud)