0

こんにちは、Google アプリ エンジンで jinja2 を使用していますが、jinja がページをレンダリングした後にブラウザに URL リンクを表示できるかどうか疑問に思っています。

たとえば、ブラウザが www.test.com/login という URL にアクセスすると、サーバー スクリプトは GET リクエストを受け取り、jinja 経由で login.html をブラウザに送り返します。ただし、ブラウザのリンクには www.test.com/login のみが表示され、www.test.com/login/login.html は表示されません。

これを行うことは可能ですか?

4

2 に答える 2

1

レンダリングに使用するファイルと、ハンドラーが処理する現在の URL パスとの間に関連はありません。
コンテンツはストリームを介して渡され、必要なものをストリームに入れることができます。それは、テンプレートからレンダリングされたコンテンツまたはストリームに書き込む任意のデータです。

そのテンプレート名をパラメーターとして受け取り、それをレンダリングするハンドラーを作成できます。これにより、テンプレート ファイル名の URL が得られます。

于 2012-06-11T07:17:31.340 に答える
1

URL は、リクエスト ハンドラーと app.yaml ファイルによって処理されます。したがって、要求を www.test.com/login.html にマップすると、www.test.com/login で一致する要求と一致するものになります。

したがって、あなたの質問は実際にはジンジャとは何の関係もありませんが、リクエストハンドラーとは関係ありません。

例えば

app.yaml

application: your_app
version: 1
runtime: python27
api_version: 1
default_expiration: "1d"
threadsafe: True

- url: /login.html
  static_files: static/html/login.html
  upload: static/html/login.html
  secure: never

- url: /login
  script: main.app

main.py

import webapp2
from controllers.LoginHandler import LoginHandler

app = webapp2.WSGIApplication([
    webapp2.Route(r'/login', LoginHandler)
], debug=True)

上記の例では、2 つの異なるルートを示しています。/login.html 用の 1 つの静的ルートと、/login 用の 2 番目の生成済みルート。.html が必要ない場合は、そのルートに一致しないでください。

一致に関する注意。検索エンジンは http と https の扱いが異なるためsecure: never/always/optional、ルートに を使用して、ブックマークが同じであることを確認することをお勧めします。また、末尾の / と .html はネイキッド ルートとは異なります。検索のインデックス作成のためにルートを強制することは非常に便利です。

于 2012-06-11T16:56:42.527 に答える