我在Python环境中使用Google App Engine。
我的主要代码在main.py文件中。我想为不同的页面创建一个新的.py文件。 我创建了.py文件,添加了yaml文件的路径。但我仍然得到'404错误,找不到资源'。
这是我的yaml文件
application: myapp
version: 1
runtime: python27
api_version: 1
threadsafe: yes
handlers:
- url: .*
script: main.app
- url: /hello
script: hello.app
libraries:
- name: webapp2
version: "2.5.2"
当用户访问exampleurl.com/hello时,我希望执行hello.py文件。
这是hello.py的当前内容
import webapp2
class HeyPage(webapp2.RequestHandler):
def get(self):
self.response.headers['Content-Type'] = 'text/html'
self.response.out.write('Hello, All!')
app = webapp2.WSGIApplication([('/hello', HeyPage)],
debug=True)
这是日志:
INFO 2014-01-10 06:15:31,150 module.py:617] default: "GET /hello HTTP/1.1" 404 154
答案 0 :(得分:2)
您应该列出从最具体到最不具体的处理程序。你的经纪人:
- url: .*
script: main.app
基本上说main.app
应该处理每个网址。由于它是列表中的第一个,main.py
将尝试处理每个请求,无论app.yaml
中跟随它的处理程序如何。将其更改为:
handlers:
- url: /hello
script: hello.app
- url: .*
script: main.app
所有人都应该工作。
答案 1 :(得分:1)
据我所知,GAE将URL与从上到下的处理程序中的模式匹配。 。*与任何URL匹配,因为它是处理程序部分中的第一个模式,它调用main.app而不是hello.app。您应该在处理程序部分的末尾放置。* pattern,以便任何与之前定义的任何URL模式都不匹配的URL由main.app处理。
因此,请将处理程序部分修改为:
application: myapp
version: 1
runtime: python27
api_version: 1
threadsafe: yes
handlers:
- url: /hello
script: hello.app
- url: .*
script: main.app
libraries:
- name: webapp2
version: "2.5.2"