我是编程的新手,最近我的一个朋友给了我一个项目,让我熟悉编程环境和语言(在这个特定的例子中是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上运行程序(当然不是同时),并转到我的localhost地址后,我收到了标题中出现的错误:
“jinja2.exceptions.TemplateSyntaxError:期望令牌'打印结束语'',得到'贴''
我很想得到一个很好的解释,为什么会发生这种情况,以及如何解决这个问题。请记住我是初学者,可能需要首先解释几个基本概念:)。
PS。视频中的人的代码工作,所以我很想知道我哪里出错了。
线<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'] }}
才能使它工作。这是一个字典。因此,您必须使用标记而不是调用来获取值。