gpt4 book ai didi

python - 使用 TAL、Chameleon 和 Pyramid 重复元素时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 09:17:05 25 4
gpt4 key购买 nike

我真的很难让 TAL 和 Chameleon/Pyramid 发挥出色。 . .

我在 Pyramid 中有一个 View 返回,例如,以下内容:

def view(request):
return {'results' : [ {'name':'alice', 'value':22},
{'name':'bob', 'value':11},
{'name':'charlie', 'value':33} ] }

我有一个包含以下 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>

我希望得到以下内容的 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>

但是,当我尝试运行它时,Pyramid 会抛出一个错误:

raise ParseError("Unexpected end tag.", token)
ParseError: Unexpected end tag.
- String: "</tr>"

我觉得这很奇怪。我删除了关闭 <\tr> ,然后得到以下错误:

NameError: row
- Expression: "python:row['name']"

我真的坚持这个,任何帮助将不胜感激!

最佳答案

奇怪。我认为这应该可行。

无论如何,您在这里使用 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>

python: 在 Chameleon 中也是多余的。然后,您还可以在模板中使用属性访问而不是字典访问:

<tr tal:repeat="row results">
<td tal:content="row.name">the name</td>
<td tal:content="row.value">1</td>
</tr>

最后,您可以使用 ${} 替换语法代替 tal:content。这会给你一个更紧凑的拼写:

<tr tal:repeat="row results">
<td>${row.name}</td>
<td>${row.value}</td>
</tr>

也许,在执行此操作时,您会在途中解决您的实际问题。 ;-)

关于python - 使用 TAL、Chameleon 和 Pyramid 重复元素时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7981275/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com