Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 向web2py传递值的HTML表单_Python_Web2py - Fatal编程技术网

Python 向web2py传递值的HTML表单

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查询


我在编写此查询时遇到问题?我想知道如何将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的,只是创建查询的一种快捷方式,而不必手动全部写出(如代码最后一节所示)。