String concatenation in Jinja

后端 未结 5 452
旧时难觅i
旧时难觅i 2021-02-03 16:52

I just want to loop through an existing list and make a comma delimited string out of it.
Something like this: my_string = \'stuff, stuff, stuff, stuff\'

<
相关标签:
5条回答
  • 2021-02-03 17:38

    If stuffs is a list of strings, just this would work:

    {{ stuffs|join(", ") }}
    

    Link to join filter documentation, link to filters in general documentation.

    0 讨论(0)
  • 2021-02-03 17:40

    You can use + if you know all the values are strings. Jinja also provides the ~ operator, which will ensure all values are converted to string first.

    {% set my_string = my_string ~ stuff ~ ', '%}
    
    0 讨论(0)
  • 2021-02-03 17:47

    Just another hack can be like this.

    I have Array of strings which I need to concatenate. So I added that array into dictionary and then used it inside for loop which worked.

    {% set dict1 = {'e':''} %}
    {% for i in list1 %}
    {% if dict1.update({'e':dict1.e+":"+i+"/"+i}) %} {% endif %}
    {% endfor %}
    {% set layer_string = dict1['e'] %}
    
    0 讨论(0)
  • 2021-02-03 17:48

    If you can't just use filter join but need to perform some operations on the array's entry:

    {% for entry in array %}
    User {{ entry.attribute1 }} has id {{ entry.attribute2 }}
    {% if not loop.last %}, {% endif %}
    {% endfor %}
    
    0 讨论(0)
  • 2021-02-03 17:49

    My bad, in trying to simplify it, I went too far, actually stuffs is a record of all kinds of info, I just want the id in it.

    stuffs = [[123, first, last], [456, first, last]]
    

    I want my_sting to be

    my_sting = '123, 456'
    

    My original code should have looked like this:

    {% set my_string = '' %}
    {% for stuff in stuffs %}
    {% set my_string = my_string + stuff.id + ', '%}
    {% endfor%}
    

    Thinking about it, stuffs is probably a dictionary, but you get the gist.

    Yes I found the join filter, and was going to approach it like this:

     {% set my_string = [] %}
     {% for stuff in stuffs %}
     {% do my_string.append(stuff.id) %}
     {% endfor%}
     {%  my_string|join(', ') %}
    

    But the append doesn't work without importing the extensions to do it, and reading that documentation gave me a headache. It doesn't explicitly say where to import it from or even where you would put the import statement, so I figured finding a way to concat would be the lesser of the two evils.

    0 讨论(0)
提交回复
热议问题