URLのリンク切れをなくす

CherryPyはあるURLで何が起こるかをきわめて簡単に定義することができます: Pythonオブジェクトに対して必要なメソッドを与えるだけです。すなわちテンプレートやPythonコードの中では、CherryPyに対してメソッドを定義したそのやり方に基づいたURLを使えばよいのです。

しかしながらときにはそういったURLが環境に依存する場合もあります。例えばTurboGears全体が http://yoursite.com/~yourusername/tg で動いているとき、すべてを考慮した絶対URLを確認する必要があるかもしれません。

TurboGears?ではこういったURLを生成するための便利なurl関数が用意されています。例えば /view?id=5&page=10 へリダイレクトしたい場合を考えましょう。このときサイトのトップまでを含めたURLを呼ぶためには turbogears.url("/view", id=5, page=10) というようにします。このときサイトのトップがどこなのかどうやって知るのでしょう?これは server.webpath という設定変数が教えているのです。

このurl関数はテンプレート内では tg.url として利用可能です。

TurboGears?の将来のバージョンでは一つのサイトで複数のTurboGearsアプリケーションを稼働させることも可能になるでしょう。 url 関数には既にアプリケーションルートの概念があります。今後はアプリケーションルートから絶対URLを相対的に生成するようになるでしょう。

注意: url 関数にアプリケーションルートを認識させるためには、そのルートが turbogears.controllers.Root を拡張したものでなければなりません。またコントローラは turbogears.controllers.Controller を拡張したものであることが推奨されます。