在另一个页面中呈现cms页面

2024-09-30 12:29:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图呈现一个cms页面,在另一个页面使用自定义的cms插件。 这是我的插件类:

class PageInDiv(CMSPlugin):
    page_div = models.ForeignKey(Page, verbose_name= "page")

    def __unicode__(self):
        return self.page_div.get_title()

正如你所看到的,它所做的只是将插件链接到一个页面然后在我的cms上_插件.py我有

^{pr2}$

如您所见,我将所提供页面的html传递给插件模板,然后插件模板在托管插件的页面中呈现。 我遇到的问题是,通过foreignkey选择的页面中的占位符内容没有呈现(显示)。 所以我的问题是,有没有一种方法可以编程地呈现页面占位符?在


Tags: nameselfdiv插件模板verbosecmsplugincms
2条回答

我需要从模板中呈现另一个页面,可以通过以下方式完成:

@register.simple_tag(takes_context=True)
def render_page(context, page, default="base.html"):
    if not page:
        return loader.get_template(default).render(context)
    new_context = copy(context)
    new_context['request'] = copy(context['request'])
    new_context['request'].current_page = page
    new_context['current_page'] = page    
    new_context['has_change_permissions'] = page.has_change_permission(context['request'])
    new_context['has_view_permissions'] = page.has_view_permission(context['request'])
    if not new_context['has_view_permissions']:
         return loader.get_template(default).render(context)
    return loader.get_template(page.get_template()).render(new_context)

只是暂时忽略了创建一个自定义插件来做你所描述的事情的想法(例如,以编程方式呈现页面的占位符),以下可能是一个可行的替代方案,这取决于你到底想实现什么。。。在

你应该能够,就在你的“外部”cms页面的模板中(即,你想在其中显示另一个cms页面的内容的页面),像这样访问当前页面:

{{ request.current_page }}

这是通过cms页面中间件实现的。因此,更进一步,您应该能够像这样访问页面的占位符:

^{pr2}$

这是一种将页面占位符“嵌入”另一个页面的方法。在

相关问题 更多 >

    热门问题