AT's Blog

趣味のプログラミング、ギター、音楽とかとか

Flask Quickstartを真面目に読んで見る・3

URL Building

Flaskにはroute()デコレータで登録された関数向けのURLを生成するurl_for()関数が用意されています。 url_for()関数は、関数名を第1引数に取り、必要であればURLパラメータをキーワード引数として指定してやります。

Quickstartのサンプルコードをそのまま引用します。

>>> from flask import Flask, url_for
>>> app = Flask(__name__)
>>> @app.route('/')
... def index(): pass
...
>>> @app.route('/login')
... def login(): pass
...
>>> @app.route('/user/<username>')
... def profile(username): pass
...
>>> with app.test_request_context():
...  print url_for('index')
...  print url_for('login')
...  print url_for('login', next='/')
...  print url_for('profile', username='John Doe')
...
/
/login
/login?next=/
/user/John%20Doe

URL buildingのメリットは、

  1. Pythonコード中にURLをハードコーディングせずに済む。
  2. Unicode特殊文字を透過的に扱ってくれる。
  3. アプリケーションがルートURLに置かれていなくても、url_for()関数が適切なURLを生成してくれる。

だそうです。ちなみに、透過性の意味ですが、ユーザが技術的な細かいことを気にせずに済む、といった意味だそうです。

透過性 (情報工学) - Wikipedia


結局逐字訳みたいになってきましたが、英語の勉強にもなるので一石二鳥かなと思います。