我在以下路线中调用模板:
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)
当它在header.tpl:
中击中此行时%if page['name'] == "welcome":
它会抛出以下错误:
File "/home/brett/projects/tastech website/development/views/header.tpl", line 5, in <module>
%if page['name'] == "welcome":
TypeError: string indices must be integers
答案 0 :(得分:1)
在调用模板之前,将page
设置为空字符串:
page = ""
# ...
else:
page += template("./views/header.tpl", page = page, admin = admin)
因此,在模板中,page
设置为""
,即空字符串。
为字典使用不同的名称; page_data
,或许:
page_data = {"name": "welcome", "title": "Welcome", "icon": "/images/welcome-icon.png"}
# ...
page = ""
# ...
else:
page += template("./views/header.tpl", page=page_data, admin=admin)
答案 1 :(得分:1)
您设置了page = ""
。所以页面是一个字符串。然后,您将page
传递给header.tpl
。好吧,它是一个字符串,你不能用另一个字符串索引到一个字符串。
解决方案:为字符串使用不同于dict的名称。
答案 2 :(得分:0)
您已使用另一个变量覆盖了名为page
的原始字典,该变量是由连接的模板结果组成的字符串。称之为别的东西。