我试图将一个值从一个表单传递给一个函数,处理它,然后在另一个函数中调用该函数。基本上,用户提交搜索词。它被传递给一个名为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)
答案 0 :(得分:2)
这是web2py问题。 在web2py中重定向()时,request.vars不会传递到新页面。 会话变量即可。
尝试在form.process()。中接受打印request.vars,然后再在__process()中打印。
相反,在index()内部进行处理,然后将结果dict返回到索引视图。然后您可以重定向或打开一个新窗口传递数据。 或者,如果您希望保持原样,请将其存储在会话中,以便可以从__process()访问它。