Django CMS:如何获取占位符html内容?

时间:2014-10-13 09:51:11

标签: django-cms

型号:     从cms.models.fields导入PlaceholderField

MyModel(models.Model)
    title = models.CharField(max_length=255)
    placeholder = PlaceholderField('my_model')

我想在变量中检索占位符html内容,类似于:

MyModel.objects.get(id=1).placeholder.get_html_content()

怎么做?

1 个答案:

答案 0 :(得分:2)

这样的事情应该有效!

鉴于您可以访问request对象:

from django.template import RequestContext

from cms.plugin_rendering import render_placeholder


obj = MyModel.objects.get(id=1)
html = render_placeholder(obj.placeholder, RequestContext(request))

如果您无权访问request对象,则可以使用RequestFactory模拟request对象

from django.conf import settings
from django.contrib.auth.models import AnonymousUser
from django.test.client import RequestFactory


def get_request(language=None):
    request_factory = RequestFactory()
    request = request_factory.get('/')
    request.session = {}
    request.LANGUAGE_CODE = language or settings.LANGUAGE_CODE

    # Needed for plugin rendering.
    request.current_page = None
    request.user = AnonymousUser()
    return request