Django шаблоны, найти строку заменить на другую строку
Хей, я пишу несколько шаблонов, но хочу преобразовать "в" _" внутри строки.
Я хочу преобразовать вывод
{{ user.name }}
от чего-то типа "Мое имя" до "My_Name". Как это сделать?
Ответ 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 %}