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')