Python 关于循环的Jinja错误返回

Python 关于循环的Jinja错误返回,python,flask,jinja2,Python,Flask,Jinja2,我一直试图用Flask和Jinja读取文本文件,但是使用for循环,我遇到了麻烦。我的代码如下: {% for fileNamesIterator in fileNames fileNameOpen = open(fileNamesIterator, "r") fileLines = fileName.readlines() %} <div id="{{ fileNamesIterator[:len(fileNamesIterator)-4] }}" class="title">T

我一直试图用Flask和Jinja读取文本文件,但是使用for循环,我遇到了麻烦。我的代码如下:

{% for fileNamesIterator in fileNames
fileNameOpen = open(fileNamesIterator, "r")
fileLines = fileName.readlines() %}

<div id="{{ fileNamesIterator[:len(fileNamesIterator)-4] }}" class="title">Title: {{ fileLines[2] }}</div>
<div class="author">Author: {{ fileLines[1] }}</div>
<div class="date">Date Posted: {{ fileLines[0] }}</div>
<br><br>
<div class="mainText"> {{ fileLines[3] }} <br> {{ fileLines[4] }}
</div>
<hr>

{% fileLines.close()
endfor %}
{%用于文件名中的FileName迭代器
fileNameOpen=open(FileName迭代器,“r”)
fileLines=fileName.readlines()%}
标题:{{fileLines[2]}
作者:{{fileLines[1]}
发布日期:{{fileLines[0]}


{{fileLines[3]}
{{{fileLines[4]}
{%fileLines.close() endfor%}
唯一的问题是它返回了一个错误:

TemplateSyntaxError:遇到未知标记“fileLines”。Jinja正在寻找以下标签:“endfor”或“else”。需要关闭的最里面的块是“for”

我发现正是这一点导致了问题:

fileNameOpen=open(fileNamesIterator,“r”)
fileLines=fileName.readlines()

但是我不应该在
for
语句之后,但在
endfor
语句之前执行其他python语句吗

有什么想法吗

解决方案:Jinja不是Python,大部分工作需要在模板之外完成

Jinja不是Python(如果您需要能够在模板中编写任意Python,您将使用它做得更好)。相反,您需要使用Python进行工作,并将结果传递给Jinja:

data = []
for file_name in file_names:
    with open(file_name, 'r') as f:
        file_lines = f.readlines()
        data.append({
            "id": file_name[:len(file_name) - 4],
            "title": file_lines[2],
            "author": file_lines[1],
            "date": file_lines[0],
            "content": file_lines[3:5]
        })

return render_template("template.html", articles=data)
然后,您的模板可以是:

{% for article in articles %}
<div id="{{ article.id }}" class="title">Title: {{ article.title }}</div>
<div class="author">Author: {{ article.author }}</div>
<div class="date">Date Posted: {{ article.date }}</div>
<br><br>
<div class="mainText"> {{ article.content[0] }} <br> {{ article.content[1] }}
</div>
<hr>
{% endfor %}
{%用于文章%中的文章]
标题:{{article.Title}}
作者:{article.Author}
发布日期:{article.Date}


{{article.content[0]}
{{{article.content[1]}
{%endfor%}