【问题标题】:Jinja2 template find and replace string with new formatJinja2 模板用新格式查找和替换字符串
【发布时间】:2020-08-20 05:50:01
【问题描述】:
我有一个变量,其值为FileSystem,我想在我的模板中将其打印为file_system。
注意我在这里做两件事:
1. 如果我的字符串的第一个字母是大写字母,那么我将其转换为小写
2. 如果我的任何其他字母大写,那么我将其替换为下划线,后跟其较低的字符串格式。
另一个例子是将StackOverFlow 转换为stack_over_flow
我怎样才能完成这项工作?
【问题讨论】:
标签:
python
python-2.7
templates
django-templates
jinja2
【解决方案1】:
您可以编写一个自定义 jinja 过滤器,将您的变量作为输入,并允许您应用所需的转换。
引用自官方 jinja 帮助:
自定义过滤器只是常规的 Python 函数,它们将过滤器的左侧作为第一个参数,并将传递给过滤器的参数作为额外参数或关键字参数。
jinja help section for custom filters
例子:
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 }}