jinja2.exceptions.TemplateSyntaxError:应为标记“打印结束语句”,得到“posted”

2024-05-15 23:53:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我是编程新手,最近我的一个朋友给了我一个项目,让我自己熟悉编程环境和语言(在这个特定的例子中是python)。 https://www.youtube.com/watch?v=QnDWIZuWYW0我用这段视频作为初学者教程,帮助我理解如何继续我的个人项目。我写的代码正是视频中的代码,我得到了一个错误。

from flask import Flask, render_template
app = Flask(__name__)

posts = [
    {
        'author': 'Alon Salzmann',
        'title': 'First Post',
        'content': 'First post content',
        'date posted': 'September 5, 2018'
    },
    {
        'author': 'Alon Salzmann',
        'title': 'Second Post',
        'content': 'Second post content',
        'date posted': 'September 6, 2018'
    }
]

@app.route("/")
def homepage():
    return render_template('Home.html', posts=posts)

@app.route("/about")
def about():
    return render_template('About.html')

if __name__ == '__main__':
    app.run(debug=True)

上面的代码是我编写的python代码,下面的代码是我编写的涉及python的html代码:

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    {% for post in posts %}
    <h1>{{ post.title }}</h1>
    <p>By {{ post.author }} on {{ post.date posted }}</p>
    <p>{{ post.content }}</p>
    {% endfor %}
</body>
</html>

在cmd和powershell上运行程序(当然不是同时运行)并转到本地主机地址后,我得到了标题中出现的错误:

“jinja2.exceptions.TemplateSyntaxError:需要标记'end of print statement',得到'posted'”

我想得到一个很好的解释,为什么会发生这种情况,以及如何解决这个问题。请记住我是一个初学者,可能需要先解释一些基本概念:)。

另外,视频中那个人的代码起作用了,所以我想知道我哪里出错了。


Tags: 项目代码appdate视频titlehtml编程
2条回答

这里的问题是<p>By {{ post.author }} on {{ post.date posted }}</p>

替换为<p>By {{ post.author }} on {{ post.date_posted }}</p>

post.date_posted是一个变量,应该与模型中的变量相同,它们之间的空格显然是语法错误(拼写错误)

你必须做<p>By {{ post['author'] }} on {{ post['date posted'] }}才能让它工作。这是一个dict,所以你必须用indicies来获取值,而不是调用。

相关问题 更多 >