2017-06-28 3 views
1

Ich bin neu zu web.py und haben Schwierigkeiten mit den folgenden:Schwierigkeit in einer Schleife Rendering Form

in app.py

args =() 
for i in range(4): 
    args = args + (form.Checkbox('followup'+str(i)),) 

my_form = form.Form(*args) 

in my_template.html

$for i in range(4): 
    $ name = "followup"+ str(i) 
    $name $:form.$name.render() <br> 

Wenn ich dies ausführen, erhalte ich die folgenden Fehler:

'str' Objekt hat kein Attribut 'r ender '

Wie soll ich meine Vorlage ändern, damit ich 4 Checkboxen habe?

Jede Hilfe würde sehr geschätzt werden.

Antwort

0

Das Problem ist $:form.$name löst sich in eine Zeichenfolge, vor dem Aufruf an render(). Sie können das beheben, indem Sie es durch $:form[name] ersetzen. Sie befinden sich immer noch im "Python" -Kontext mit form[name], daher sollten Sie name statt $name verwenden.

=== my_template.html === 
$def with(form) 

$for i in range(4): 
    $ name = 'followup' + str(i) 
    $name $:form[name].render()<br/> 

oder, noch einfacher:

=== my_template.html === 
$def with(form) 

$for i in form.inputs: 
    $i.description $:i.render()<br/> 
+0

Dank. Es war das _ $: form [name] .render() _, das ich brauchte. – user8224031