我有一个页面,可以提供插件和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?例如如何才能知道占星页面和图片页面是否存在以便我可以渲染它们?
答案 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