Django CMS 插件上下文与页面上下文
Django CMS plugin context vs. page context
我有一个新闻页面,在 news.detailpage
中,我有另外 4 个项目(新闻、视频等)作为一个名为 cms_plugin 的模型的小栏目 CrossItems
。
事实是,cms_plugin 的上下文可以包含 news.detailpage
中显示的新闻。
我担心的是,我无法从 cms_plugin 的上下文访问页面上下文,否则我很容易过滤掉新闻。
有什么方法可以做到这一点,使这 4 个项目不包含左侧显示的实际新闻?
这样的事情怎么样..
在你的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
如果您想要当前的 'article'...您需要在 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
您可以在插件渲染方法中访问它。
def render(self, context, instance, placeholder):
context = super(CrossItemsPlugin, self).render(context, instance, placeholder)
request = context['request']
article = request.current_article
我有一个新闻页面,在 news.detailpage
中,我有另外 4 个项目(新闻、视频等)作为一个名为 cms_plugin 的模型的小栏目 CrossItems
。
事实是,cms_plugin 的上下文可以包含 news.detailpage
中显示的新闻。
我担心的是,我无法从 cms_plugin 的上下文访问页面上下文,否则我很容易过滤掉新闻。
有什么方法可以做到这一点,使这 4 个项目不包含左侧显示的实际新闻?
这样的事情怎么样..
在你的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
如果您想要当前的 'article'...您需要在 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
您可以在插件渲染方法中访问它。
def render(self, context, instance, placeholder):
context = super(CrossItemsPlugin, self).render(context, instance, placeholder)
request = context['request']
article = request.current_article