1

さまざまな種類のページを制御するときは、コードを別の python ファイルに移動します。しかし、この方法には欠点があります。URL ハンドラーを変更するたびに、main.pyURL ハンドラーに関する最終的な行を設定する必要があります。例えば ​​:

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: resource not found.

私を助けてください。

ありがとう :)

4

1 に答える 1

3

yaml ファイルの /blog/.* URL 仕様が、blog.py ファイル (/blog) の URL 仕様と一致しません。特に /blog/.* では、ブログの後に URL にスラッシュが必要です。たとえば、両方の場所で /blog だけを使用すると機能します。または、両方の場所で /blog/.* を使用できます。

URL 指定子は yaml ファイルに表示される順序で一致するため、この特定のケースでは、/blog/.* は /blog では一致しませんが、最後の (実際にはすべてをキャッチ) /.* 指定子で一致し、したがってメイン.py ハンドラーがロードされ、一致しません (main.py 内の呼び出し WSGIApplication コンストラクターにパターンがありません)。

お役に立てれば。-シルヴィウ

于 2012-07-06T20:33:35.800 に答える