Python webapp动态路径

时间:2012-02-23 06:41:46

标签: python google-app-engine

我目前正在试验一些API,我想知道如何使用网址作为应用的参数。例如:

http://www.myapp.com/myapp/jack 打印出“hello jack”

http://www.myapp.com/myapp/john 打印出“你好约翰”

http://www.myapp.com/myapp/john%20jack打印出“hello john jack”

我想了解一下我可以寻找这个功能的地方。我觉得这很容易,但我无法掌握它。它依赖于我正在使用的框架吗?我对Python很陌生,所以我仍然会接受Django和喜欢的人。我在Google App Engine上使用Python和GAE捆绑的webapp框架。

这是我目前正在使用的代码:

import cgi

from google.appengine.api import users
from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class MainPage(webapp.RequestHandler):
  def get(self,url=None):
    self.response.out.write("hello " + str(url))

application = webapp.WSGIApplication([
                                    (r'/(\w+)', MainPage)
                                    ],
                                     debug=True)

def main():
  run_wsgi_app(application)

if __name__ == "__main__":
  main()

2 个答案:

答案 0 :(得分:3)

韦,

您必须创建一个网址格式,就像您在myapp处收到请求一样,您将解析剩余的网址并显示该消息。

例如

档案helloworld/app.yaml

application: helloworld
version: 1
runtime: python
api_version: 1

handlers:
- url: /.*
  script: helloworld.py

档案helloworld/helloworld.py

from google.appengine.ext import webapp
from google.appengine.ext.webapp.util import run_wsgi_app

class MainPage(webapp.RequestHandler):
    def get(self, url=None):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.out.write('Happy New Year '+str(url))

#application = webapp.WSGIApplication(
#                                     [('/', MainPage)],
#                                     debug=True)

application = webapp.WSGIApplication([
                                    (r'/myapp/(?P<url>\d{4})/$', MainPage)
                                    ],
                                     debug=True)

def main():
    run_wsgi_app(application)

if __name__ == "__main__":
    main()

因此,这将处理您在/myapp/year/处的所有请求,因此您必须在/myapp/之后获取值并显示年份。

注意:请长篇大论自己,这样你就会明白它将如何运作:)。

答案 1 :(得分:0)

我只是好奇,真的需要?P<url>标签吗?

我设法通过使用

来解决问题
application = webapp.WSGIApplication([
                                    (r'/myapp(/.*)*?', MainPage)
                                    ],
                                     debug=True)

谢谢Lafada&amp;魏昊与我们分享。我也遇到了这个问题,我发现这个讨论真有帮助:)