首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >tal中的Chameleon/TAL/ZPT模板问题:重复

tal中的Chameleon/TAL/ZPT模板问题:重复
EN

Stack Overflow用户
提问于 2019-06-26 00:13:31
回答 1查看 102关注 0票数 0

我正在尝试为Python使用Chameleon模板(它是基于Zope TAL/METAL语言的)。这个简单的模板会引发错误(dic是列表中的字典):

代码语言:javascript
复制
    <tr tal:repeat="dic myitems">
        <span tal:omit-tag="" tal:repeat="pair dic.items()">
            <td tal:content="pair[1 if dic.index else 0]"></td>
        </span>
    </tr>
代码语言:javascript
复制
AttributeError: 'dict' object has no attribute 'index'

 - Expression: "pair[1 if dic.index else 0]"
 - Filename:   <string>
 - Location:   (line 21: col 33)
 - Arguments:  repeat: {...} (0)
               dic: {...} (11)
               with_nginx_distribution: <list - at 0x7f30b34b20e0>
               pair: <tuple - at 0x7f30b36c7b90>
               css: \n.tabs {\n  position: relative;   \n  min-height: 20...
               target_language: <NoneType - at 0x7f30b46ade00>

我试过dic.indexdic.item.indexrepeat.indexrepeat.item.index,但是它们看起来都错了。访问循环项索引的正确语法是什么?

EN

回答 1

Stack Overflow用户

发布于 2019-06-26 01:46:06

文档已经过时了,正确的表达式是repeat['variable'].index,如下所示:

代码语言:javascript
复制
from chameleon import PageTemplate

tmpl = '''
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:tal="http://xml.zope.org/namespaces/tal"
      xmlns:metal="http://xml.zope.org/namespaces/metal"
      xmlns:i18n="http://xml.zope.org/namespaces/i18n">

<table border="1">
<tr tal:repeat="d xxx">
<td tal:repeat="p d.items()">
<span tal:omit-tag="" tal:content="p[1 if repeat['d'].index else 0]"></span>
</td>
</tr>
</table>

</html>
'''

template = PageTemplate(tmpl)
data = {"xxx": [
    {"name": "John", "age": 30},
    {"name": "Michael", "age": 34}
]}
print(template(**data))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56758190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档