我尝试将页面上的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)
现在,我想将占位符呈现为变量。我必须以哪种方式调用哪个函数来获得此功能?
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
您可以使用Placeholder.render
进行渲染。请注意,上下文必须在Placeholder.render
键下包含一个有效的HttpRequest
对象。 'request'
可以是width
。有关示例,请参见None
。