问题
I am currently working on a page where a user would select all the appropriate fields in a search form (html) which would than pass the values to the web2py query.
I am having an issue with writing this query? I am wondering how to actually pass the values from HTML form to the web2py query to be run against the database?
回答1:
When you submit a form to web2py (via GET or POST), all the form variables will be available in request.vars
(for more on this, see the book sections on Dispatching and the request object as well as the chapter on forms).
So, you could do something like:
def search():
rows = None
if request.vars:
query = reduce(lambda a, b: (a & b),
(db.mytable[var] == request.vars[var] for var in request.vars))
rows = db(query).select()
return dict(rows=rows)
Note, the reduce()
with the generator expression is equivalent to writing a query like this:
(db.mytable.field1 == request.vars.field1) & \
(db.mytable.field2 == request.vars.field2) & \
...
(db.mytable.fieldN == request.vars.fieldN)
来源:https://stackoverflow.com/questions/14291258/html-form-passing-values-to-web2py