Google App Engine用フレームワーク「Kay」のurl_for関数でURLを作成する

Google App Engine用フレームワーク「Kay」でurl_for関数を使って、URLを作成する方法。

テンプレートでアプリケーション内へのリンクを作成するとき、URLを直接記述してしまうと、
urls.pyを修正したときにテンプレートも変更しなければならなくなります。

たとえば、urls.pyで次のように記述されているとき、

def make_rules():
    return [
        EndpointPrefix('myapp/', [
        …
        Rule('/new_user/', endpoint='new_user'),
        ]),
  ]

次のようにテンプレートファイルにURLを直接記述してしまうと、変更に弱くなってしまいます。

<a href="/new_user/">new user</a>

そこでurl_for()関数を使用します。

url_for()関数は、urls.pyの設定からURLを作成します。

<a href="{{url_for('myapp/new_user')}}">new user</a>
=> <a href="/new_user/">new user</a>

urls.pyを変更すると、自動的にリンク先のURLが変更されるようになります。

url_for関数にキーワード引数_anchorを指定すると、URLアンカーを指定できます。

<a href="{{url_for('myapp/new_user', _anchor='top')}}">new user</a>
=> <a href="/new_user/#top">new user</a>

キーワード引数_externalを指定すると、フルサーバー名とhttp://プリフィクスつきのURLになります。

<a href="{{url_for('myapp/new_user', _external=True)}}">new user</a>
=> <a href="http://localhost:8080/new_user/">new user</a>

ちなみに、views.pyでも使用できます。

from kay.utils import url_for
url = url_for('myapp_new_user')

参考:8. ユーティリティ関数 — Kay v0.10.0 documentation

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください