难以在循环内呈现表单
Difficulty rendering form inside a loop
我是 web.py 的新手,遇到以下问题:
在app.py
args = ()
for i in range(4):
args = args + (form.Checkbox('followup'+str(i)), )
my_form = form.Form(*args)
在my_template.html
$for i in range(4):
$ name = "followup"+ str(i)
$name $:form.$name.render() <br>
当我 运行 这样做时,我收到以下错误:
'str'对象没有属性'render'
我应该如何更改我的模板以便我有 4 个复选框?
如有任何帮助,我们将不胜感激。
问题是 $:form.$name
在调用 render()
之前解析为字符串。您可以通过将其替换为 $:form[name]
来解决该问题。您仍处于 form[name]
的 "python" 上下文中,因此您应该使用 name
而不是 $name
。
=== my_template.html ===
$def with(form)
$for i in range(4):
$ name = 'followup' + str(i)
$name $:form[name].render()<br/>
或者,更简单:
=== my_template.html ===
$def with(form)
$for i in form.inputs:
$i.description $:i.render()<br/>
我是 web.py 的新手,遇到以下问题:
在app.py
args = ()
for i in range(4):
args = args + (form.Checkbox('followup'+str(i)), )
my_form = form.Form(*args)
在my_template.html
$for i in range(4):
$ name = "followup"+ str(i)
$name $:form.$name.render() <br>
当我 运行 这样做时,我收到以下错误:
'str'对象没有属性'render'
我应该如何更改我的模板以便我有 4 个复选框?
如有任何帮助,我们将不胜感激。
问题是 $:form.$name
在调用 render()
之前解析为字符串。您可以通过将其替换为 $:form[name]
来解决该问题。您仍处于 form[name]
的 "python" 上下文中,因此您应该使用 name
而不是 $name
。
=== my_template.html ===
$def with(form)
$for i in range(4):
$ name = 'followup' + str(i)
$name $:form[name].render()<br/>
或者,更简单:
=== my_template.html ===
$def with(form)
$for i in form.inputs:
$i.description $:i.render()<br/>