Подтвердить что ты не робот

Django шаблоны, найти строку заменить на другую строку

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

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

{{ user.name }}

от чего-то типа "Мое имя" до "My_Name". Как это сделать?

4b9b3361

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

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

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

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

{{ user.underscored_name }}

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

class User()
  def underscored_name(self):
    return self.name.replace(' ','_')

Ответ 4

Если вы не хотите писать свой собственный тег, вы можете сделать это вот так:

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

Однако его довольно многословный...