【问题标题】:Render a Django CMS Placeholder to variable in view将 Django CMS 占位符渲染到视图中的变量
【发布时间】:2014-08-11 22:05:17
【问题描述】:

我尝试将 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


    【解决方案1】:

    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/等。您不想要完整的 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
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2013-08-25
        • 2017-10-26
        • 1970-01-01
        • 2017-02-16
        • 2013-03-22
        • 1970-01-01
        • 2014-12-10
        • 2011-08-02
        • 2017-12-24
        相关资源
        最近更新 更多