DjangoのURL ディスパッチャ

Djangoにおけるウエブシステムフレームワークの大きな機能、URL ディスパッチャについてです。

ディスパッチ用に、ひとつPythonモジュールを作成します。

その中には、URL パターン (単純な正規表現) と Python のコールバック関数 (自作のビュー) へのマッピングを記述します。

そのマッピング用のモジュールは、慣習的にURLconfと命名します。

Pythonのモジュールなので、動的に生成することもできます。

URLconfの決定アルゴリズム

  1. Django は、ルート URLconf モジュールを決定する。
    URLconf モジュールは、ROOT_URLCONF に完全な Python import パスの形式で設定されている。
    HttpRequest オブジェクトの urlconf 属性が設定されてい た場合はその値を使う。
  2. Django はルート URLconf モジュールをロードして、 urlpatterns とい う名前の変数を探す。
    urlpatternsは Python のリストで、 django.conf.urls.defaults.patterns() が返すのと同じ形式。
  3. Django は URL パターンを順に調べて、リクエスト URL に最初にマッチし たところで止まる。
  4. 何らかの正規表現にマッチしたら、 Django はマッピングされているビュー を import して呼び出す。
    ビューは単純な Python 関数です。ビュー関 数の第一引数には HttpRequest が、それ以降の引 数には正規表現でキャプチャした値が渡されます。

URLconfの例

from django.conf.urls import patterns, url, include

urlpatterns = patterns('',
    (r'^articles/2003/$', 'news.views.special_case_2003'),
    (r'^articles/(\d{4})/$', 'news.views.year_archive'),
    (r'^articles/(\d{4})/(\d{2})/$', 'news.views.month_archive'),
    (r'^articles/(\d{4})/(\d{2})/(\d+)/$', 'news.views.article_detail'),
)

                    
                                        
                                    
Posted in

コメントを残す

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

*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="">