0

我正在尝试将值从表单传递给函数,对其进行处理,然后在另一个函数中调用该函数。基本上,用户提交一个搜索词。它被传递给一个被调用的函数,该函数process将现在处理的术语作为字典返回。在results函数中,术语被解析为搜索引擎 API,结果以 HTML 或 JSON 格式返回。但是,该函数process返回 none 而不是已处理的术语。谁能告诉我我做错了什么?这是在 web2py 中完成的,所以一些代码可能看起来很奇怪,但我认为问题出在 python 上,而不是 web2py

import urllib2

def index():
    form = FORM('',
            INPUT(_name='query', requires=IS_NOT_EMPTY()),
            INPUT(_type='submit'))
    if form.process().accepted:
        redirect(URL('results'))
    elif form.errors:
        response.flash = 'form has errors'
    else:
        response.flash = 'please fill the form'
    return dict(form=form)

def __process():
    term=request.vars.query
    #do some processing
    return dict(term=term)

def results():
    import urllib2
    address = "http://www.blekko.com/?q=%(term)s+/json&auth=<mykey>" % __process()

    results = urllib2.urlopen(address).read()

    return dict(results=results)
4

1 回答 1

2

这是 web2py 的问题。当您在 web2py 中进行 redirect() 时,request.vars 不会传递到新页面。会话变量虽然。

尝试在 form.process().accepted 中打印 request.vars,然后在 __process() 中再次打印。

相反,在 index() 内进行所有处理,然后将结果字典返回到索引视图。然后您可以重定向或打开一个新窗口传递数据。或者,如果您希望保持原样,请将其存储在会话中,以便可以从 __process() 访问。

于 2012-07-04T22:28:29.650 回答