我目前正在处理一个页面,用户将在搜索表单(html)中选择所有适当的字段,然后将值传递给 web2py 查询。
我在编写此查询时遇到问题?我想知道如何将 HTML 表单中的值实际传递给 web2py 查询以针对数据库运行?
当您向 web2py 提交表单(通过 GET 或 POST)时,所有表单变量都将可用request.vars
(有关此内容的更多信息,请参阅关于调度和request
对象的书籍部分以及关于表单的章节)。
因此,您可以执行以下操作:
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)
注意,reduce()
带有生成器表达式的 等同于编写这样的查询:
(db.mytable.field1 == request.vars.field1) & \
(db.mytable.field2 == request.vars.field2) & \
...
(db.mytable.fieldN == request.vars.fieldN)