函数返回'None'而不是term

时间:2012-07-04 22:02:59

标签: python web2py

我试图将一个值从一个表单传递给一个函数,处理它,然后在另一个函数中调用该函数。基本上,用户提交搜索词。它被传递给一个名为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)

1 个答案:

答案 0 :(得分:2)

这是web2py问题。 在web2py中重定向()时,request.vars不会传递到新页面。 会话变量即可。

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

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