Django-url-mapping
Django-URLマッピング
これで、前の章で説明した作業ビューができました。 URLを介してそのビューにアクセスする必要があります。 DjangoにはURLマッピングのための独自の方法があり、プロジェクトのurl.pyファイル*(myproject/url.py)*を編集することによって行われます。 url.pyファイルは次のようになります-
ユーザーがWebアプリのページをリクエストすると、Djangoコントローラーが引き継いでurl.pyファイルを介して対応するビューを探し、見つからない場合はHTML応答または404 not foundエラーを返します。 url.pyで最も重要なのは "urlpatterns" タプルです。 URLとビューの間のマッピングを定義する場所です。 マッピングは、次のようなURLパターンのタプルです-
マークされた行は、URL "/home"をmyapp/view.pyファイルで作成されたhelloビューにマッピングします。 上記のように、マッピングは3つの要素で構成されています-
- パターン-解決およびマップするURLに一致する正規表現。 python 're’モジュールで動作するすべてのものがパターンに適格です(URL経由でパラメーターを渡す場合に便利です)。
- ビューへのPythonパス-モジュールをインポートするときと同じです。
- 名前-URLリバーシングを実行するには、上記の例で行われた名前付きURLパターンを使用する必要があります。 完了したら、サーバーを起動してビューにアクセスします:http://127.0.0.1/hello
URLを整理する
これまで、「myprojects/url.py」ファイルにURLを作成しましたが、Djangoとアプリの作成について前述したように、最良のポイントは異なるプロジェクトでアプリケーションを再利用できるようにすることでした。 すべてのURLを「projecturl.py」ファイルに保存すると、問題が簡単にわかります。 したがって、ベストプラクティスは、アプリケーションごとに「url.py」を作成し、それをメインプロジェクトのurl.pyファイルに含めることです(以前に管理インターフェイスの管理URLを含めました)。
どうですか?
私たちは、次のコードを使用してmyappでurl.pyファイルを作成する必要があります-
その後、myproject/url.pyは次のように変更されます-
myappアプリケーションのすべてのURLが含まれています。 「/hello」を介してアクセスされたホームルは「/myapp/hello」になりました。これは、Webアプリにとってよりよく理解しやすい構造です。
ここで、myapp“ morning”に別のビューがあり、myapp/url.pyにマップしたい場合、myapp/url.pyを次のように変更します。
これはリファクタリングすることができます-
ご覧のとおり、 urlpatterns タプルの最初の要素を使用しています。 これは、アプリ名を変更する場合に便利です。
ビューへのパラメーターの送信
URLをマップする方法、それらを整理する方法、そしてビューにパラメーターを送信する方法を見てみましょう。 古典的なサンプルは記事の例です(「/articles/article_id」から記事にアクセスしたい)。
パラメータの受け渡しは、URLパターンで regexp を使用してキャプチャすることにより行われます。 「myapp/view.py」に次のようなビューがある場合
「/myapp/article/articleId」からアクセスできるようにmyapp/url.pyにマッピングしたいので、「myapp/url.py」に次のものが必要です-
Djangoがurlを表示するとき:“/myapp/article/42”それはviewArticleビューにパラメーター '42’を渡し、ブラウザーで次の結果を得るはずです-
ここではパラメーターの順序が重要であることに注意してください。 1年の1か月の記事のリストが必要な場合、viewArticlesビューを追加しましょう。 view.pyは次のようになります-
対応する url.py ファイルは次のようになります-
「/myapp/articles/12/2006/」に移動すると、「Displaying article of:2006/12」が表示されますが、パラメータを逆にすると同じ結果は得られません。
これを回避するために、URLパラメーターをビューパラメーターにリンクすることができます。 そのため、 url.py は次のようになります-