python瓶子为什么简单的模板引擎会把我的dict变成一个列表?

2024-05-05 14:36:20 发布

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

我按以下路径调用模板:

page = {"name": "welcome", "title": "Welcome", "icon": "/images/welcome-icon.png"}
contentOnly = request.query.get("contentOnly")
formRedirect = False
admin = is_admin()
announcments = get_announcments()
page = ""
if contentOnly:
  page += template("./views/welcome.tpl", contentOnly = contentOnly, announcments = announcments)
else:
  page += template("./views/header.tpl", page = page, admin = admin)
  page += template("./views/welcome.tpl", contentOnly = contentOnly, announcments = announcments)
  page += template("./views/footer.tpl", formRedirect = formRedirect)

当它碰到这条线的时候页眉.tpl公司名称:

^{pr2}$

它抛出以下错误:

File "/home/brett/projects/tastech website/development/views/header.tpl", line 5, in <module>
%if page['name'] == "welcome":
TypeError: string indices must be integers

Tags: name路径getifadminpagetemplateviews
3条回答

您已经用另一个变量覆盖了名为page的原始字典,该变量是一个由串联的模板结果组成的字符串。叫它别的吧。在

在调用模板之前,请将page设置为空字符串:

page = ""
# ...
else:
    page += template("./views/header.tpl", page = page, admin = admin)

因此在模板中,page被设置为"",即空字符串。在

为字典使用一个不同的名称;page_data,可能是:

^{pr2}$

您设置了page = ""。所以page是一个字符串。然后将page传递给header.tpl。好吧,它是一个字符串,你不能用另一个字符串来索引一个字符串。在

解决方案:对字符串使用不同于dict的名称

相关问题 更多 >