无法弄清楚谷歌应用引擎中的yaml和主页面处理程序之间的关系

时间:2013-09-09 20:25:23

标签: google-app-engine yaml

我在google和stackoverflow中搜索了很多但是无法弄清楚我的代码是不行的,

app.yaml文件如下:

application: morgan629200774
version: 1
runtime: python27
api_version: 1
threadsafe: yes

handlers:

- url: /.*
  script: main.app

- url: /unit1/
  script: unit1.app

- url: /unit2/
  script: unit2.app

- url: /favicon\.ico
  static_files: favicon.ico
  upload: favicon\.ico


libraries:
- name: webapp2
  version: "2.5.2"

这是我的代码:

import webapp2






form = """
<form method="post">
    Enter some text to ROT13
    <br>
    <br>
    <div><textarea name="content" rows="7" cols="50"></textarea></div>
    <input type="submit" value="submit">
    <br>
    <br>
</form>
"""

class MainPage(webapp2.RequestHandler):
     def get(self):
        self.response.out.write("main page")   

class unit1(webapp2.RequestHandler):
     def get(self):
        self.response.out.write("hello world")

class unit2(webapp2.RequestHandler):
     def get(self):
        self.response.out.write(form)
        self.response.out.write("hello world")
     def post(self):
        rot13=''  
        text=self.request.get('content')
        rot13=text.encode('rot13')
        self.response.out.write(rot13)


app = webapp2.WSGIApplication([
    ('/.*', MainPage),
    ('/unit1/', unit1),
    ('/unit2/', unit2)
], debug=True)

有人能告诉我我做错了什么吗?

由于

1 个答案:

答案 0 :(得分:1)

你还没有(并且不需要)unit1.appunit2.app,所以我不知道你为什么在app.yaml中引用它们。从Python代码中可以看出,有一个名为app的对象,它包含整个应用程序的路由。我假设(虽然你没有声明)Python文件被称为“main.py”。这就是app.yaml引用main.app的原因 - 即app模块中的main对象。

app.yaml中URL的目的只是传递给Python代码。所以,你只需要一个处理程序:第一个。删除其他两个处理程序。它捕获/下的所有并将其传递给main.app。在该文件中,底部定义的第一条路线应为:

('/', MainPage)

因为您不想捕获该路由中的所有内容,只捕获特定的根URL。