[英]Python App Engine : use app.yaml to control url handler
當我控制不同類型的頁面時,我將我的代碼移動到另一個python文件。 但是這種方式有缺點:每次我想改變url hander,我必須將main.py
到url處理程序的底線。 例如 :
app = webapp2.WSGIApplication([('/', MainPage),
('/thanks',ThanksHandler),
('/unit2/signup',Signup),
('/unit2/successful', LoginSuccess)], debug=True)
我嘗試在app.yaml
配置處理程序以防止不利。
我在同一目錄中添加文件blog.py
,在這個文件中,我有Blog類。 這是我的blog.py
文件:
class Blog(BaseHandler):
def get(self):
self.response.out.write("Hello")
app = webapp2.WSGIApplication([('/blog', Blog)], debug=True)
這是原始文件:
> handlers:
> - url: /favicon\.ico static_files: favicon.ico upload: favicon\.ico
- url: /.* script: main.app
這個新文件app.yaml
:
handlers:
- url: /favicon\.ico static_files: favicon.ico upload: favicon\.ico
- url: /blog/.* script: blog.app
- url: /.* script: main.app
但是當我轉到:localhost:port / blog:404:找不到資源。
請幫我。
謝謝 :)
yaml文件中的/blog/.* url規范與blog.py文件(/ blog)中的url規范不匹配。 特別是/blog/.*要求url在博客之后有斜杠這一事實。 例如,如果您在兩個地方都使用/ blog它將起作用。 或者你可以在兩個地方使用/blog/.*。
url說明符按照它們在yaml文件中出現的順序進行匹配,因此在這種特殊情況下/blog/.*將在/ blog上不匹配,但會匹配最后一個(全部捕獲)/.*說明符,因此主要.py處理程序將被加載並且無法匹配(在main.py中調用WSGIApplication構造函數中沒有模式)。
希望這可以幫助。 -Silviu
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.