我有一个主页,其中包含GET
和POST
功能。 POST
函数从搜索屏幕获取数据,并应通过ajax调用将此信息传递给worldMarkers
类。这是独立的,因为应用程序的其他方面将需要它。
这样做的目的是让用户在index
上按下提交,并且在POST
通话期间,它可以限制检索到的结果。这个逻辑存在于worldMarkers
类中。
class index(object):
def GET(self):
# do things to generate the page
return html
def POST(self):
continents = web.input(search_continents=[])
countries = web.input(search_countries=[])
searchDict = {}
if continents['search_continents']:
searchDict['continents'] = continents['search_continents']
if countries['search_countries']:
searchDict['countries'] = countries['search_countries']
markers = worldMarkers()
# Yes, this just spits out the results, nothing fancy right now
return markers.GET()
#alternatively,
#return markers.GET(searchDict)
class worldMarkers(object):
def __init__(self, **kargs):
self.searchDict = None
if 'searchDict' in kargs:
self.searchDict = kargs['searchDict']
def GET(self):
print "SearchDict: %s" % (self.searchDict)
# No searchDict data exists
第一个选项,没有markers.GET()
的参数意味着我的搜索条件都没有通过。如果我markers.GET(searchDict)
,我收到此错误:
<type 'exceptions.TypeError'> at /
GET() takes exactly 1 argument (2 given)
如何将搜索参数传递给worldMarkers
课程?
答案 0 :(得分:2)
看起来您应该按照以下方式创建worldMarkers
的实例,以便您的searchDict存在:
markers = worldMarkers(searchDict=searchDict)
现在,你在没有参数的情况下创建它:
markers = worldMarkers()
在这种情况下,条件if 'searchDict' in kargs
为false且self.searchDict = kargs['searchDict']
未运行。
而且,正如@TyrantWave指出的那样,你的GET并没有真正准备接受任何参数,因为它只被声明为def GET(self)
。请参阅文档this section的最后一个示例代码。