【发布时间】:2023-03-30 00:51:01
【问题描述】:
嘿,我正在编写一些模板,但我想在字符串中将“”转换为“_”。
我想转换输出
{{ user.name }}
从“我的名字”到“我的名字”。我该怎么做?
【问题讨论】:
嘿,我正在编写一些模板,但我想在字符串中将“”转换为“_”。
我想转换输出
{{ user.name }}
从“我的名字”到“我的名字”。我该怎么做?
【问题讨论】:
Matthijs 答案的简短版本:
{{ user.name.split|join:"_" }}
当然,它只在空格分割时有效。
【讨论】:
没有内置的标签或过滤器来做这个替换。编写一个按给定字符拆分的过滤器,然后将其与join 过滤器组合,或者编写一个直接进行替换的过滤器。
【讨论】:
{{ user.name.split|join:"_" }}。
我喜欢在我的视图/控制器代码中执行这种类型的转换,即:
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(' ','_')
【讨论】:
self.underscored_name 字段。无论如何 +1,因为它帮助我解决了问题。
如果您不喜欢编写自己的自定义标签,您可以这样做...
{% for word in user.name.split %}{{word}}{% if not forloop.last %}_{% endif %}{% endfor %}
但是它非常冗长......
【讨论】: