Alle web.py-Formularbeispiele haben das folgende Format (von webpy.org):
myform = form.Form(
form.Textbox("boe"),
form.Textbox("bax",
form.notnull,
form.regexp('\d+', 'Must be a digit'),
form.Validator('Must be more than 5', lambda x:int(x)>5)),
form.Textarea('moe'),
form.Checkbox('curly'),
form.Dropdown('french', ['mustard', 'fries', 'wine']))
class index:
def GET(self):
form = myform()
# make sure you create a copy of the form by calling it (line above)
# Otherwise changes will appear globally
return render.formtest(form)
def POST(self):
form = myform()
if not form.validates():
return render.formtest(form)
else:
# form.d.boe and form['boe'].value are equivalent ways of
# extracting the validated arguments from the form.
return "Grrreat success! boe: %s, bax: %s" % (form.d.boe, form['bax'].value)
Ich möchte das Dropdown-Feld (form.Dropdown im obigen Beispiel) nicht statisch beim Deklarieren des Formulars füllen, sondern in der GET/POST-Methode mit Einträgen, die beim Aufruf der Seite aus einer Datenbanktabelle abgerufen werden.
Ich habe ein paar Stunden lang gesucht, kann aber nirgendwo einen Hinweis finden (google, webpy.org, google groups)