Django模板链接if else语句

时间:2011-08-22 20:45:20

标签: django django-templates

假设我在模板中有这样的代码:

<a href="#">
    {% if request.user.first_name or request.user.last_name %}
        {{ request.user.first_name }} {{ request.user.last_name }}
    {% else %}
        {{ request.user }}
    {% endif %}
</a>

此代码的问题在于它会为链接添加尾随空格,因此链接看起来像 link _,并在末尾加下划线。

如何删除此类尾随空格? {% spaceless %}标记在这里没有多大帮助,因为它只删除标记之间的空格。

5 个答案:

答案 0 :(得分:9)

我实际上找到了解决问题的简单方法。

<a href="#">{% spaceless %}
    {% if request.user.first_name or request.user.last_name %}
        {{ request.user.first_name }} {{ request.user.last_name }}
    {% else %}
        {{ request.user }}
    {% endif %}
{% endspaceless %}</a>

通过在其中放置无空间标签,剥去它所获得的字符串。放在外面

答案 1 :(得分:1)

作为决定的可能变体: http://www.soyoucode.com/2011/minify-html-output-django

如果没有这样的标签,您可以尝试创建自己的标签: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

答案 2 :(得分:0)

快速解决方法:使用html注释“转义”不必要的空格。 可能更好的解决方案:创建一个包含此条件的模板标记。

答案 3 :(得分:0)

借用单个模板标签的用法 - 从模板中删除此逻辑会很好(而且非常简单)。

虽然,不只是使用{{ request.user }}给出与你在这里做的完全相同的结果吗?

答案 4 :(得分:0)

而不是if-else阻止尝试使用更短的版本:

{{ user.get_full_name|default:user.get_username }}