【问题标题】:Replace underscore with spaces in Jinja用 Jinja 中的空格替换下划线
【发布时间】:2022-12-04 14:48:24
【问题描述】:

我正在尝试用空格替换下划线,我尝试了以下解决方案: Django Template: remove underscore and capitalize each word

但它只保留第一个词并删除字符串的其余部分:

示例:min_wall_hight

输出:分钟

我的代码:

.
.
.
{% for i in t[1:] %}
<input type="text" name={{i[0]}} value={{i[0]|replace("_"," ")|capitalize}} readonly>
{% endfor %}
.
.
.

当我以这种方式使用过滤器时:{{i[0]|replace("_","-")|capitalize}} 或没有空格只是 "" 它工作正常。但是当它是空格“”时,它将丢弃其余的字符串 有人能帮我吗我是新神社

【问题讨论】:

    标签: html jinja2


    【解决方案1】:

    看起来您在 Jinja 模板中使用了 capitalize 过滤器,但您只将它应用于字符串的第一个单词。这就是输出仅显示第一个单词并丢弃字符串其余部分的原因。

    要解决此问题,您可以将大写过滤器应用于字符串中的每个单词,而不仅仅是第一个单词。为此,您可以将字符串拆分为单词列表,对每个单词应用大写和替换过滤器,然后将这些单词重新组合成一个字符串。

    以下是如何在 Jinja 模板中执行此操作的示例:

    {% for i in t[1:] %}
      {% set words = i[0]|split("_") %}
      {% for word in words %}
        {{ word | capitalize | replace("_", " ") }}
      {% endfor %}
    <input type="text" name={{i[0]}} value={{ words | join(" ") }} readonly>
    {% endfor %}
    

    在此示例中,拆分过滤器用于将字符串拆分为单词列表,然后使用嵌套的 for 循环遍历单词。对于每个单词,应用 capitalize 和 replace 过滤器以将单词的第一个字母大写并将下划线替换为空格。

    处理完所有单词后,连接过滤器用于将单词重新连接到一个字符串中,每个单词之间有空格。然后将此结果字符串用作输入元素的值。

    【讨论】:

      猜你喜欢
      • 2011-07-12
      • 2020-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多