2010-12-04 10 views
1

HTML:Meine formencode.variabledecode ist eine leere Liste zurückkehrt - Pylons

<input type="text" name="blah-0" value="test" /> 
<input type="text" name="blah-1" value="another test" /> 

Controller:

class myvalidator(formencode.Schema): 

    allow_extra_fields = True 
    filter_extra_fields = True 

    test = formencode.ForEach(formencode.validators.String()) 

def form_posted(self): 
    form_result = myvalidator().to_python(request.params) 

    print form_result 

Was ich versuche ist eine Liste zu erhalten zurückgegeben. Etwas wie:

> print form_result['blah'] 
['test', 'another test'] 

Was mache ich falsch?

+1

Ist form_posted eine Methode der Klasse Myvalidator? Ich bin nicht mit Pylonen vertraut, aber es scheint, dass der Einzug nicht richtig ist oder der Code aus verschiedenen Teilen Ihres Programms stammen. – Kabie

+0

Die Einrückungen und Bereiche sind alle korrekt. Ich habe es nur für die Post reduziert. – dave

+0

Offenbar ist 'form_posted' eine Methode von etwas, da das erste Argument' self' ist. Ist 'test' wirklich ein 'myvalidator'-Klassenattribut? – martineau

Antwort

1

Ihr Beispiel ist unvollständig, aber Sie müssen Ihre Variablen dekodieren vor:

from formencode import variabledecode 

def form_posted(self): 
    decoded = variabledecode.variable_decode(request.params) 
    form_result = myvalidator().to_python(decoded) 
    print form_result 

Sie sollten auch diese Zeile ändern, wenn Sie blah wollen:

test = formencode.ForEach(formencode.validators.String()) 

zu:

blah = formencode.ForEach(formencode.validators.String()) 
Verwandte Themen