1

シンプルな GAE アプリを構築しようとしていて、さまざまなパーツをさまざまな python ファイルに保存したいと考えています。たとえば、次のような URI が必要です。

xxx/appspot.com/books/book/42

私の app.yaml

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

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

- url: /books/*
  script: books.app

- url: .*
  script: main.application

libraries:
- name: webapp2
  version: "2.5.2"

私の books.py ファイル:

import webapp2

class BookHandler(webapp2.RequestHandler):
    def get(self):
        self.response.write('BookHandler')

app = webapp2.WSGIApplication([
    ('/.*/book', BookHandler)
], debug=True)

URI を試すと、メッセージ BookHandler の代わりに空白の画面が表示されます。誰でも助けることができますか?

4

2 に答える 2

0

ルートをハンドラーから分離することから始めます。最初に「routes.py」ファイルを作成し、その中にアプリケーションのルートを追加します。

from webapp2 import Route

ROUTES = [
    Route('/books/book/<book_id:\d+>', handler='handlers.books.BooksHandler')
]

ここで行った変更は、books.py ファイルが "handlers" モジュールに含まれるようになったことに注意してください。このモジュール内の「books.py」ファイルは次のようになります。

import webapp2


class BooksHandler(webapp2.RequestHandler):

    def get(self, book_id):
        self.response.write('This is the Book Handler %s' % book_id)

最後のステップは、webapp2 wsgi アプリケーションと yaml ファイルの適切な構成です。

main.py:

import webapp2
from routes import ROUTES

app = webapp2.WSGIApplication(ROUTES, debug=True)

app.yaml:

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

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

- url: .*
  script: main.app

libraries:
- name: webapp2
  version: "2.5.2"
于 2013-10-11T20:11:55.990 に答える