0

私のGAEプロジェクトには次のような設定があります:

/static/.* --> images, css, js
/rest/.* --> a script handling all rest resources using webapp2 handlers

基本的にいくつかの html ページを作成するために jinja2 テンプレートを使用したいのですが、たとえば jinja2 が提供するテンプレート継承を使用します。多かれ少なかれ、サーバー側のインクルードを行います。

したがって、他のすべての受信リクエストは、テンプレートを直接レンダリングする必要があります。たとえば、次のようになります。

/ --> index template
/index.html --> index template
/some/path/to/a/page.html --> /some/path/to/a/page template
/some/path/to/a/page --> /some/path/to/a/page template

拡張子なしの .html とパスの両方を一致させたいと思います。

すべてのパスのルートを作成したくはありません。これを処理できるスマートなスクリプトだけです。これは可能でしょうか?

4

1 に答える 1

4

はい、できます。ただし、そのための単一のハンドラーが必要です。

# app.yaml
- url: /rest/.*
  script: main.app

# main.py
class PageHandler(webapp2.RequestHandler):
    def get(self, page):
        if not page.endswith('.html'):
            page += '.html'
        self.response.write(self.jinja2.render_template(page))

app = webapp2.WSGIApplication([
    webapp2.RedirectRoute('/rest/<page>', PageHandler, name='page'),
], debug=True)

次に、ページを /rest/index.html または /rest/path/to/page にリンクするだけです

ただし、これを純粋に静的ファイルに使用している場合でも、インスタンスを使用してこれらのページを生成します。必要に応じて、私の app-engine-static github プロジェクトを使用できます。これは基本的に、jinja2 を使用して動的サイトを構築し、静的ファイルを生成するのに役立つプロジェクトです。これは、アプリ エンジンの組み込み cdn で機能し、インスタンス時間を消費しません: http://blog.altlimit.com/2013/08/host -static-website-on-google-app.html

于 2013-08-30T15:16:21.140 に答える