Django CMS检查占位符是否为空

2024-10-01 04:51:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用:

  • DjangoCMS 2.4版
  • Django 1.5.1款
  • Python 2.7.3

我想检查我的占位符是否为空。在

<div>
    {% placeholder "my_placeholder" or %}
    {% endplaceholder %}
</div>

如果占位符为空,我不希望在占位符之间创建html。在

^{pr2}$

Tags: ordjangodivmyhtmldjangocmsplaceholderpr2
3条回答

目前在django cms中还没有内置的方法来实现这一点,所以您必须编写一个自定义的模板标记。在django-cms谷歌群组上有一些关于这个的老讨论:

根据第一次讨论中的代码,我总结出以下要点:

我是这样用的:

{% load extra_cms_tags %}
{% get_placeholder "My Placeholder" as my_placeholder %}

{% if my_placeholder %}
<div>
    {{ my_placeholder }}
</div>
{% endif %}

这是一个非常紧凑的解决方案。在

模板筛选器:

@register.filter('placeholder_is_empty')
def placeholder_is_empty(request, slot):
    page = request.current_page
    placeholder = page.placeholders.get(slot=slot)
    return placeholder.cmsplugin_set.exists()

模板中的用法:

^{pr2}$

如果希望在占位符为空时显示其他内容,请使用or参数和一个附加的{% endplaceholder %}结束标记。如果占位符没有插件或插件不生成任何输出,则呈现{% placeholder "..." or %}和{}之间的所有内容。在

示例:

{% placeholder "content" or %}

There is no content.

{% endplaceholder %}

相关问题 更多 >