Django Python google应用程序引擎的多种获取方法
在python中,一个类中可能有多个get吗 我试过这个:Django Python google应用程序引擎的多种获取方法,django,google-app-engine,rest,get,Django,Google App Engine,Rest,Get,在python中,一个类中可能有多个get吗 我试过这个: import webapp2 class MainPage(webapp2.RequestHandler ): def get(self): self.response.headers['Content-Type'] = 'text/plain' self.response.out.write("test") def get(self, name, surname):
import webapp2
class MainPage(webapp2.RequestHandler ):
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write("test")
def get(self, name, surname):
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('N: %s S: %s' % (name , surname))
app = webapp2.WSGIApplication([('/.*', MainPage)],
debug=True)
但是不起作用
我该怎么做?两个不同的文件处理两个不同的路径?在任何Python类中,不能有两个方法命名为同一个对象 相反,您应该定义两个不同的类,然后使用不同的URL模式匹配来选择使用哪个,而不是将所有内容(
/.*
)发送到单个类
下面是一个(非常)基本的例子:
class MainPage(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write("test")
class NamePage(webapp2.RequestHandler):
def get(self, name, surname):
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('N: %s S: %s' % (name , surname))
app = webapp2.WSGIApplication([
('/(.+)/(.+)', NamePage), # Matches /foo/bar
('/.*', MainPage), # Matches everything else
], debug=True)
在任何Python类中,都不能有两个名称相同的方法 相反,您应该定义两个不同的类,然后使用不同的URL模式匹配来选择使用哪个,而不是将所有内容(
/.*
)发送到单个类
下面是一个(非常)基本的例子:
class MainPage(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write("test")
class NamePage(webapp2.RequestHandler):
def get(self, name, surname):
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('N: %s S: %s' % (name , surname))
app = webapp2.WSGIApplication([
('/(.+)/(.+)', NamePage), # Matches /foo/bar
('/.*', MainPage), # Matches everything else
], debug=True)
您试图尝试的是重载。 一种比创建类更微妙的方法可以如下所示:
import webapp2
class MainPage(webapp2.RequestHandler ):
def get(self, name="default_name", surname="default_surname"):
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('N: %s S: %s' % (name , surname))
app = webapp2.WSGIApplication([('/.*', MainPage)],debug=True)
在这里,name和姓氏是可选的关键字参数(它们在您的问题中是位置参数)。我希望它能有所帮助您在这里尝试的是重载。 一种比创建类更微妙的方法可以如下所示:
import webapp2
class MainPage(webapp2.RequestHandler ):
def get(self, name="default_name", surname="default_surname"):
self.response.headers['Content-Type'] = 'text/plain'
self.response.out.write('N: %s S: %s' % (name , surname))
app = webapp2.WSGIApplication([('/.*', MainPage)],debug=True)
在这里,name和姓氏是可选的关键字参数(它们在您的问题中是位置参数)。我希望它有帮助所以这就像有两个不同的文件,对吗?我应该如何在yaml文件中映射它们?不,这可以全部放在一个文件中。好的,但是yaml中的映射呢?yaml中的任何内容都不需要更改。您现有的Python文件只需更新为如上所示。请参见此处的示例:或者,您可以有一个类和一个get方法,该方法具有可选参数。哪个更合理取决于请求的性质。所以这就像有两个不同的文件,对吗?我应该如何在yaml文件中映射它们?不,这可以全部放在一个文件中。好的,但是yaml中的映射呢?yaml中的任何内容都不需要更改。您现有的Python文件只需更新为如上所示。请参见此处的示例:或者,您可以有一个类和一个get方法,该方法具有可选参数。哪个更合理取决于请求的性质。