簡體   English   中英

Python App Engine:使用app.yaml來控制url處理程序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM