Ссылка на шаблон Django с оператором if else - PullRequest
8 голосов
/ 23 августа 2011

Допустим, у меня есть код в шаблоне, подобный следующему:

<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>

Проблема с этим кодом заключается в том, что он добавляет пробел к ссылке, поэтому ссылка выглядит как ссылка _ с подчеркиванием вконец.

Как мне удалить такие конечные пробелы?Тег {% spaceless %} здесь не совсем помогает, потому что он удаляет только пробелы между тегами.

Ответы [ 5 ]

9 голосов
/ 24 августа 2011

Я действительно нашел простое решение для моей проблемы.

<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 голос
/ 23 августа 2011

В качестве возможного варианта решения: http://www.soyoucode.com/2011/minify-html-output-django

Или вы можете попробовать создать свой собственный тег, если таких тегов нет: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/

0 голосов
/ 15 декабря 2015

Вместо блока if-else попробуйте использовать более короткую версию:

{{ user.get_full_name|default:user.get_username }}
0 голосов
/ 23 августа 2011

Отказ от использования одного тега шаблона - было бы хорошо (и довольно легко) удалить эту логику из шаблона.

Хотя, разве использование {{ request.user }} не дает точно такой же результат, как то, что вы здесь делаете?

0 голосов
/ 23 августа 2011

Быстрый обходной путь: используйте html-комментарии, чтобы «убрать» ненужные пробелы.Вероятно, лучшее решение: создайте тег шаблона, который содержит это условие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...