如何从 Flask/jinja2 循环中的列表中删除元素?

2024-01-09

我目前正在制作一个flask项目,我想在其中显示四个Bootstrap每行的列数。为了做到这一点,我想我可以这样做:

my_list = ["a","b","c","d","e","f","g","h","i","k",
       "l","m","n","o","p","q","r","s","t","u",
       "v","w","x","y","z"]

for i in range(len(my_list)):
    for i in my_list[:4]:
        print(i)
        my_list.remove(i)

# returns every element of my_list in order

但是,当我在实际项目中尝试这样做时,无论我放在哪里,都会出现错误

{% number_of_texts.remove[j] %}: “jinja2.exceptions.TemplateSyntaxError:遇到未知标签 '文本数'。 Jinja 正在寻找以下标签:“endfor” 要不然'。需要关闭的最里面的块是‘for’。”

这些是 main.py 中的变量:

@app.route('/texts')
def texts():
number_of_texts = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]
return render_template('texts.html', title="All texts", number_of_texts=number_of_texts, len=len(number_of_texts))

这是我的 texts.py 代码:

{% for i in range(len) %}
<div class="row"> 
    {% for j in number_of_texts[:4] %}
        <div class="col m-1"> 
            <div class="card" style="width: 15rem; height: 28rem; border-radius: 25px 25px 0px 0px">
                <img src="static\img\p_01.jpg" class="card-img-top" alt="..." style="object-fit: cover; border-radius: 25px 25px 0px 0px">
                <div class="card-body">
                    <h5 class="card-title">row: {{ i }}</h5>
                    <p class="card-text">column: {{ j }}</p>
                    <a href="{{ url_for('specific_text', text_no=1) }}" class="btn btn-dark">Button</a>
                </div>
            </div>
        </div>
    {% endfor %}{% number_of_texts.remove[j] %}
</div>
{% endfor %}

如果我不删除j从列表中number_of_texts,当然,除了获得太多列之外,我还得到了我真正想要的布局。它看起来是这样的:https://i.stack.imgur.com/V07oW.jpg https://i.stack.imgur.com/V07oW.jpg

有没有其他方法可以将这些项目从list,这样我只显示列表中的每个元素一次?

此致


如果您的实际用例是将事物分成行,您只需要batch filter https://jinja.palletsprojects.com/en/2.11.x/templates/#batch.

{% for row in things|batch(4) %}
  <div class="row">
     {% for item in row if item %}
        <div class="item">
           {{ item }}
        </div>
     {% endfor %}
  </div>
{% endfor %}

请参阅上述链接的文档fill_with=参数也;如果长度为things不能被 4 整除,因为if item.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Flask/jinja2 循环中的列表中删除元素? 的相关文章

随机推荐