Шаблоны Django, найти строку заменить другой строкой - PullRequest
27 голосов
/ 02 февраля 2010

Слушай, я пишу несколько шаблонов, но хочу преобразовать "" в "_" внутри строки.

Я хочу преобразовать вывод

{{ user.name }}

от чего-то вроде «Мое имя» до «Мое_Имя». Как мне это сделать?

Ответы [ 4 ]

78 голосов
/ 18 июля 2011

Более короткая версия ответа Маттиса:

{{ user.name.split|join:"_" }}

Конечно, это работает только при разбиении на пробелы.

11 голосов
/ 02 февраля 2010

Для этой замены нет встроенного тега или фильтра. Напишите фильтр, который разделяется на данный символ, а затем объедините его с фильтром join или напишите фильтр, который выполняет замену напрямую.

7 голосов
/ 12 января 2011

Мне нравится выполнять этот тип преобразований в моем коде вида / контроллера, т.е.

user.underscored_name = user.name.replace(' ','_')
context['user'] = user

Не бойтесь просто добавить новое (временное) свойство и использовать его в своем шаблоне:

{{ user.underscored_name }}

Если вы используете это в других местах, добавьте метод underscored_name к модели User:

class User()
  def underscored_name(self):
    return self.name.replace(' ','_')
4 голосов
/ 12 января 2011

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

{% for word in user.name.split %}{{word}}{% if not forloop.last %}_{% endif %}{% endfor %}

Однако это довольно многословно ...

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