Edw*_*rdr 1 python pyramid chameleon template-tal
我真的很难让TAL和Chameleon / Pyramid表现出色。。。
我在Pyramid中有一个视图,该视图返回例如以下内容:
def view(request):
return {'results' : [ {'name':'alice', 'value':22},
{'name':'bob', 'value':11},
{'name':'charlie', 'value':33} ] }
Run Code Online (Sandbox Code Playgroud)
我有一个包含以下HTML模板:
<!DOCTYPE html>
<html>
<head></head>
<body>
<table>
<thead>
<tr>
<td>Keyword</td>
<td class="center">Mean Position</td>
</tr>
</thead>
<tbody>
<tr tal:repeat"row results">
<td>${row.name}</td>
<td>${row.value}</td>
</tr>
</tbody>
</table>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我希望以下内容的HTML输出:
<table>
<thead>
<tr class="odd">
<td>Name</td>
<td class="centre">Age</td>
</tr>
</thead>
<tbody>
<tr>
<td>alice</td>
<td>22</td>
</tr>
<tr>
<td>bob</td>
<td>11</td>
</tr>
<tr>
<td>charlie</td>
<td>33</td>
</tr>
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试运行此命令时,Pyramid引发错误:
raise ParseError("Unexpected end tag.", token)
ParseError: Unexpected end tag.
- String: "</tr>"
Run Code Online (Sandbox Code Playgroud)
我认为这很奇怪。我删除了结尾<\tr>,然后得到以下错误:
NameError: row
- Expression: "python:row['name']"
Run Code Online (Sandbox Code Playgroud)
我真的很坚持,任何帮助将不胜感激!
奇怪的。我认为这应该有效。
无论如何,您在tal:replace这里的使用是错误的,因为它将替换整个标签。您想要的是将标签内容替换为tal:content:
<tr tal:repeat="row results">
<td tal:content="python:row['name']">the name</td>
<td tal:content="python:row['value']">1</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
该python:也是变色龙多余的。然后,您还可以在模板中使用属性访问而不是字典访问:
<tr tal:repeat="row results">
<td tal:content="row.name">the name</td>
<td tal:content="row.value">1</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
最后,您可以使用${}替代语法代替tal:content。这将使您的拼写更加紧凑:
<tr tal:repeat="row results">
<td>${row.name}</td>
<td>${row.value}</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
也许,在这样做的同时,您会在途中解决实际问题。;-)
| 归档时间: |
|
| 查看次数: |
2283 次 |
| 最近记录: |