2010年12月5日日曜日

Kay URLマッピング③ 全体的な動作

今まで説明してきたURLマッピング設定は全体的にどのような動作になるのか、設定パターン毎に例示してみる。

  setting.py
(APP_MOUNT_POINTS)
urls.py
(アプリケーション・フォルダー)
URL
(開発サーバー)
逆引き
パラメータ
(urls_for)
1 設定なし view_groups = [
 ViewGroup(
  Rule('/',endpoint='index',
   view='myapp.views.index'),
 )
]
http://localhost:8080/myapp/ myapp/index
2 APP_MOUNT_POINTS = { 'myapp': '/', } view_groups = [
 ViewGroup(
  Rule('/', endpoint='index',
    view='myapp.views.index'),
 )
]
http://localhost:8080/ myapp/index
3 APP_MOUNT_POINTS = { 'myapp': '/myapplication', } view_groups = [
 ViewGroup(
  Rule('/',endpoint='index',
   view='myapp.views.index'),
 )
]
http://localhost:8080/myapplication/ myapp/index
4 設定なし view_groups = [
 ViewGroup(Rule('/', endpoint='index',
   view='myapp.views.index'),
   add_app_prefix_to_endpoint=False)
]
http://localhost:8080/myapp/ index
5 設定なし view_groups = [
 ViewGroup(Rule('/', endpoint='index',
   view='myapp.views.index'),
 ViewGroup(Rule('/test',
   endpoint='index'),
 )
]
http://localhost:8080/myapp/

http://localhost:8080/myapp/test
myapp/index

[setting.py] 及び [urls.py] が設定値、[URL] 及び [逆引きパラメータ] が結果になる。
URLと逆引きパラメータは、setting.pyとurls.pyの設定値によって複合的に影響されるのがわかる。

パターン1のアプリケーション・フォルダーのurls.py設定を、プロジェクト・フォルダーのurls.pyに設定した場合も例示する。

  setting.py
(APP_MOUNT_POINTS)
urls.py
(プロジェクト・フォルダー)
URL
(開発サーバー)
逆引き
パラメータ
(urls_for)
6 設定なし view_groups = [
 ViewGroup(
  Rule('/',endpoint='index',
   view='myapp.views.index'),
 )
]
http://localhost:8080/ index

プロジェクト・フォルダーのurls.py に記述した内容は、setting.py の設定値には影響されないのがわかる。


次に各設定値がURLマッピングにどう影響するか図示してみる。

アプリケーション・フォルダーにあるurls.pyでのURL設定値を図示(パターン1)
Kay URL構成1.JPG

プロジェクト・フォルダーにあるurls.pyでのURL設定値を図示(パターン6)
Kay URL構成2.JPG



図示してみるとよく判るのだが、Kay(werkzeug)のURLマッピングは複雑であるが構造化されている。このため大きなアプリケーションを構築する場合などに、URLの衝突が発生しにくくなっている。