我目前正在开发一个页面,用户可以在搜索表单(html)中选择所有相应的字段,而不是将值传递给web2py查询。
我在编写此查询时遇到问题?我想知道如何实际将值从HTML表单传递到web2py查询以对数据库运行?
答案 0 :(得分:2)
当您向web2py提交表单(通过GET或POST)时,所有表单变量都将在request.vars
中提供(有关详情,请参阅Dispatching上的书籍部分和{{ 3}}以及关于request
object)的章节。
所以,你可以这样做:
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)