Python 向web2py传递值的HTML表单
我目前正在处理一个页面,用户可以选择搜索表单(html)中的所有适当字段,然后将值传递给web2py查询Python 向web2py传递值的HTML表单,python,web2py,Python,Web2py,我目前正在处理一个页面,用户可以选择搜索表单(html)中的所有适当字段,然后将值传递给web2py查询 我在编写此查询时遇到问题?我想知道如何将HTML表单中的值真正传递到web2py查询,以便对数据库运行?当您向web2py提交表单时(通过GET或POST),所有表单变量都将在request.vars中提供(有关此方面的更多信息,请参阅和的书中的章节以及上的章节) 所以,你可以这样做: def search(): rows = None if request.vars:
我在编写此查询时遇到问题?我想知道如何将HTML表单中的值真正传递到web2py查询,以便对数据库运行?当您向web2py提交表单时(通过GET或POST),所有表单变量都将在
request.vars
中提供(有关此方面的更多信息,请参阅和的书中的章节以及上的章节)
所以,你可以这样做:
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)
嗨,谢谢你的回复,但是我还是有点困惑你在那里做了什么。。query=reduce是什么(lambda,b:(a&b)意思是?它只需要一个查询列表,并使用
&
逻辑运算符将它们连接起来。reduce
是一个Python函数,因此您可能可以找到解释其用法的在线资源。这部分代码不是特定于web2py的,只是创建查询的一种快捷方式,而不必手动全部写出(如代码最后一节所示)。