【问题标题】:Link to a page in django cms, first check if it exists链接到django cms中的一个页面,先检查是否存在
【发布时间】:2016-04-27 10:14:07
【问题描述】:

我经常在 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...

对于这个(不是很少)用例,是否有已知的最佳实践?还是大家都先用上图?

【问题讨论】:

    标签: python django django-templates django-cms


    【解决方案1】:

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

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

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

    【讨论】:

    • 愚蠢的我。认为它会抛出“DoesNotExist”,但在使用“as”语法时不会!谢谢你的尝试:)
    • 我是唯一的,还是在 django-cms 3.5+ 中不再工作??!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多