链接到django cms中的页面,首先检查它是否存在

时间:2016-01-21 08:53:57

标签: python django django-templates django-cms

我经常在django模板中用django-cms做这样的事情:

{% load cms_tags %}
<a href="{% page_url 'imprint' %}">Imprint</a>

在生产时,这会无声地失败,并且href属性为空。在开发时,我被迫插入id为“imprint”的页面,否则我会收到“DoesNotExist”异常。

我该如何改善这种情况?也许我正在寻找像

这样的东西
{% if 'imprint'|cms_page_exists %}
    ...the link and stuff...

对于这个(不是很少)用例,是否有一个已知的最佳实践?或者您是否首先使用它?

1 个答案:

答案 0 :(得分:4)

您可以将标记结果分配给变量,然后检查它是否为空:

{% page_url 'imprint' as url %}
{% if url %}
    <a href="{{ url }}">Imprint</a>
{% endif %}

其他方式意味着创建自己的模板标签或过滤器,所以上面是最简单的恕我直言。 另请参阅docs

中的示例