Шаблон Jinja2 находит и заменяет строку новым форматом - PullRequest
0 голосов
/ 05 мая 2020

У меня есть переменная, значение которой, скажем, FileSystem, я хотел бы напечатать это как file_system в моем шаблоне.
Заметьте, я здесь делаю 2 вещи:
1. Если первая буква моей строки - заглавная, то я конвертирую ее в нижнюю
2. Если любая из моих других букв заглавная, то я я заменяю его подчеркиванием, а затем нижним строковым форматом.
Еще один пример - преобразование StackOverFlow в stack_over_flow Как я могу это сделать?

1 Ответ

0 голосов
/ 05 мая 2020

Вы можете написать собственный фильтр jinja, который принимает вашу переменную в качестве входных данных и позволяет применить желаемое преобразование.

Цитируется из официальной справки jinja:

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

раздел справки jinja для настраиваемых фильтров

Пример:

def convert_to_snakecase(value):
    # convert your value here (lower case first letter + snake case)
    return formatted_value

Зарегистрируйте свой собственный фильтр:

app.jinja_env.filters['convert_to_snakecase'] = convert_to_snakecase

Вызовите свой фильтр внутри шаблона:

{{ my_variable|convert_to_snakecase }}
...