2

我目前正在处理一个页面,用户将在搜索表单(html)中选择所有适当的字段,然后将值传递给 web2py 查询。

我在编写此查询时遇到问题?我想知道如何将 HTML 表单中的值实际传递给 web2py 查询以针对数据库运行?

4

1 回答 1

2

当您向 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)
于 2013-01-12T13:42:55.373 回答