HTML表单将值传递给web2py

时间:2013-01-12 07:24:12

标签: python web2py

我目前正在开发一个页面,用户可以在搜索表单(html)中选择所有相应的字段,而不是将值传递给web2py查询。

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

1 个答案:

答案 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)