如何在Django CMS中向静态占位符添加插件
我刚开始使用Django-CMS中的静态占位符,想要创建一个“页脚”的静态占位符。大概是这样的:
static_placeholder = StaticPlaceholder(
name=static_placeholder_code,
code=static_placeholder_code,
creation_method=StaticPlaceholder.CREATION_BY_CODE
)
static_placeholder.save()
我尝试用api.add_plugin添加一个文本插件,但遇到了错误
add_plugin(
placeholder=static_placeholder,
plugin_type='TextPlugin',
language='en',
)
因为静态占位符不是占位符的实例,所以add_plugin无法使用。在add_plugin函数中:assert isinstance(placeholder, Placeholder)
那么,给这个静态占位符添加一个文本插件的最佳方法是什么呢?
1 个回答
4
StaticPlaceholder
是一个模型,它和 Placeholder
模型有两个外键关系,一个叫 draft
,另一个叫 public
。这两个关系都会给你一个 Placeholder
实例。
你可以直接使用:
add_plugin(
placeholder=static_placeholder.draft,
plugin_type='TextPlugin',
language='en',
)
这样就可以了,但要记住,最好总是使用 draft
,因为当你发布的时候,所有来自 draft
的插件都会被复制到 public
的占位符中。
最后,虽然不太确定你应用的具体情况,但要指出的是,当在模板中渲染 staticplaceholder
时,不需要事先创建它。你可以直接这样做:
{% load cms_tags %}
{% static_placeholder 'footer' %}
这样就会获取或创建 footer
的静态占位符。