django-cms - 如何知道哪些apphooks是活跃的

时间:2014-11-24 19:34:42

标签: python django django-cms

我有一个页面,可以提供插件和apphooks。

它就像一个页面,可以是新闻页面,占星页面和图片页面,它们都是带插件的应用程序(钩子)。

在新闻应用程序的cms_plugins.py中我想呈现混合项目,如... 2新闻,2个占星和2个图片..这意味着我需要确保这3个应用程序在此页面中真正激活。

这是我的新闻插件的render部分:

def render(self, context, instance, placeholder):
    news = MyNews.objects.order_by('-id')[:2]
    #horoscopes = Astro.objects.order_by('-id')[:2]
    #pics = Pics.objects.order_by('-id')[:2]
    context.update({
        "instance": instance,
        "news": news,
        "placeholder": placeholder
    })
    return context

我如何知道有效的apphook?例如如何才能知道占星页面和图片页面是否存在以便我可以渲染它们?

1 个答案:

答案 0 :(得分:0)

我发现了Page cms模型并以这种方式解决了问题:

from cms.models import Page

def render(self, context, instance, placeholder):
   news = MyNews.objects.order_by('-id')[:2]

   lang = context['request'].LANGUAGE_CODE
   #check if horoscope in current context language is activated for the current domain
   if Page.objects.filter(application_namespace__iexact='astro', languages__contains=lang).exists():
        horoscopes = Astro.objects.order_by('-updated')[:2]

  context.update({
       "instance": instance,
       "news": news,
       "placeholder": placeholder
   })
   return context