我有一组特定于单个页面的大量消息,我可能会在晚上显示任意组合。为了简化添加新消息(大数量将在短期内变得更大),并且为了防止有一个巨大的if / elif块为每个消息添加一个条目,我想要一种方法来包含所有相关模板每次添加新消息时都必须更新模板。我的dict代表消息包含它的模板。这是我尝试这样做的:
<div class="item-content" id="results_content">
<ul class="unstyled">
%for msg in c.page_messages:
<%include file="${msg.get('template_path')}" args="message=msg"/>
%endfor
</ul>
</div>
这会在%include标记处产生错误:
TypeError: 'NoneType' object has no attribute '__getitem__'
答案 0 :(得分:4)
看起来您可以按照描述的方式在include标记中使用变量。 From the docs:
All tags have a set of attributes which are defined for each tag. Some of these attributes
are required. Also, many attributes support evaluation, meaning you can embed an
expression (using ${}) inside the attribute text:
<%include file="/foo/bar/${myfile}.txt"/>
我的猜测是,此时c.page_messages不是可迭代的字典。