Что не так с использованием Django-шаблонов использования if's?

{% for url in urls %} <a id="URL_url_{{ url.id }}" class="edit_rightclick" title="RIGHT click to edit." href="{% if ":" not in url.url %}http://{% endif %}{{ url.url }}">{{ url.url }}</a> <span class="delete" id="URL_{{ url.id }}">&amp;#10008;</span> &nbsp; {% endfor %} 

Эвристика предназначена для добавления значения частичного или полного URL-адреса, такого как google.com, при условии, что иногда люди будут вставлять полный URL-адрес браузера, а иногда люди будут печатать google.com и никогда не будут набирать 'http: //' ,

Механизм шаблонов жалуется, что «{% if»: «not in url.url%»] является недопустимым синтаксисом. Каков правильный синтаксис / подход здесь?

2 Solutions collect form web for “Что не так с использованием Django-шаблонов использования if's?”

Как насчет использования фильтра для этого:

 href="{{ ulr.url|urlize }}" 

Не забудьте проверить здесь, прежде чем создавать свои собственные (искать urlize): https://docs.djangoproject.com/en/dev/ref/templates/builtins/


Я думаю, что лучший подход будет заключаться в том, чтобы сохранить URL-адреса как абсолютные в администраторе и полоса « http: // » при показе ссылки …

В качестве альтернативы использованию встроенных операторов шаблонов или фильтров шаблонов вы можете создать метод / свойство модели для обработки логики создания URL-адресов. Предполагая, что ваш Url является моделью:

 class Url(models.model): url = model.TextField() @property def full_url(self): if ":" not in url.url: .... return full_url 

И использовать непосредственно в шаблонах

  href="{{ url.full_url }}">{{ url.url }}</a> 

Шаблоны остаются чистыми и свободными от «бизнес-логики», которые могут быть хорошим подходом, например, если у вас есть дизайнеры, создающие шаблоны html / css

edit: Это также освобождает вас от выполнения более совершенной логики в свойстве full_url (например, проверка спама, неработающих ссылок и т. д.).

  • Django: статические файлы в шаблоне 404
  • Как показать профиль пользователя с помощью Django?
  • Шаблон Django не существует, хотя он показывает, что файл существует,
  • Итерация через два списка в шаблонах Django
  • Почему Django blocktrans работает в одном месте, а не в другом?
  • Шаблоны Django - печать разделенных запятой ManyToManyField, сортировка результатов в список в dict?
  • Перемещение таблиц, связанных с внешним ключом, в шаблонах django
  • приращение переменной в шаблонах django
  • Python - лучший язык программирования в мире.