将Django CMS占位符呈现给视图中的变量

问题描述 投票:1回答:2

我尝试将页面上的Django CMS占位符呈现为变量,以将呈现的代码返回为JSON。

所以我要做的是:

from cms.models.placeholdermodel import Placeholder
from cms.models.pagemodel import Page

def render(self, page_id, placeholder_slot, request):
    page = Page.objects.get(id=page_id)
    placeholder = page.placeholders.get(slot=placeholder_slot)

现在,我想将占位符呈现为变量。我必须以哪种方式调用哪个函数来获得此功能?

django django-cms
2个回答
0
投票

Placeholder可以手动调用并像这样渲染,例如:

from cms import models
from django import template

def render(request):
    placeholder = models.Placeholder.objects.get_or_create(slot='some_slot')
    context = template.RequestContext(request)
    return placeholder.render(request, width=None)

或用于json / javascript / etc。您不想要完整的html,而只需要值:

def render_basic(request):
    placeholder = models.Placeholder.objects.get_or_create(slot='some_slot')
    context = template.RequestContext(request)
    return placeholder.render(request, width=None, editable=False)

也有可能(甚至更容易)使用StaticPlaceholder

from cms import models

def render(request):
    placeholder = models.StaticPlaceholder.objects.get_or_create(name='name of the placeholder')
    return placeholder.code

0
投票

您可以使用Placeholder.render进行渲染。请注意,上下文必须Placeholder.render键下包含一个有效的HttpRequest对象。 'request'可以是width。有关示例,请参见None

© www.soinside.com 2019 - 2024. All rights reserved.