【Django】URLマッピング・urls.pyの設定方法|PythonによるWebアプリ開発#3

こんにちは、Kosei(@kay_diacc2)です!

この記事では、Djangoフレームワークにて活用するurls.pyをご紹介します。多様なURLマッピングメソッドを詳しく把握できます。複雑なアプリ開発を行う際は、URLの管理が煩雑になりがちです。そういった事態を阻止するために必要なノウハウを学んでいきましょう。

目次

URLマッピング(urls.py)

urls.pyファイルは、WebブラウザにアクセスするためのURLの管理に利用されます。つまり、どのアドレスにアクセスしたらどの処理内容を実行するか定義するのがここでの役割です。

アドレス管理方法

実際にDjangoにてURLを管理する方法を見ていきましょう。まず、上図のようなフォルダ構成をもとにDjangoプロジェクトが開始された場合を考えます。プロジェクトフォルダ内とアプリケーションフォルダ内にそれぞれurls.pyがあることに着目ください。2つのurls.pyを用いてURLマッピングを実践する際、管理方法は2通り検討できます。

  1. アプリケーション管理フォルダ毎にURLを管理する方法
  2. アプリケーション管理フォルダ毎にURLを管理する方法

それでは、2つの方法について詳しく見ていきましょう!

プロジェクト管理フォルダ内でURL一元管理する方法

プロジェクト管理フォルダ内にあるurls.pyを活用し、アドレスを一元管理する方法です。アプリケーションフォルダの処理を複数追加するたびに、プロジェクトフォルダ内のurls.pyを修正する必要がでてきます。単一アプリケーションのみの実装であれば有用な方法と言えますが、上図のように複数アプリケーションを管理する場合、URL管理が煩雑化する恐れがあるため、あまりお勧めしない方法です。

アプリケーション管理フォルダ毎にURLを管理する方法

アプリケーション管理フォルダ毎にurls.pyを作成し、プロジェクトフォルダ内のurls.pyとアプリケーションフォルダ内のurls.pyを紐付けます。そして、アプリケーション内のurls.pyで直接的に対象のアプリケーションフォルダのアドレスを管理するといった方法です。「アプリケーションのアドレスは対象アプリケーションフォルダ内で管理する」が基本原則の考え方です。Django設計の場合は、こちらの方法が推奨されます。本記事でもこちらの方法を採用し、後述より具体的なURLマッピング方法をご紹介していきます。

実際の記述手順

それでは、アプリケーション管理フォルダ毎にURLを管理する方法をもとに、URLをマッピングしてみましょう。

上図のように実際にアプリケーション管理フォルダ毎にurls.pyを作成し、プロジェクトフォルダ内のurls.pyと紐付けます。そして、アプリケーションフォルダ内のurls.pyで対象アプリケーションフォルダのアドレスを管理できるようにしていきます。以下、順を追って見ていきましょう!

アプリケーション管理フォルダ(App_Folder)内にurls.py

アプリケーションフォルダ内のurls.pyに着目し、下記のようにコーディングします。

#path関数をインポート
from django.urls import path
#同ディレクトリからview.pyをインポート
from . import views

#path関数(アクセスするアドレス、呼び出す処理)を追記
urlpatterns = [
    path('', views.index, name='index'),
]

インポートしているpath関数とは、対象アドレスにアクセスしたら指定の処理実行を促す関数です。path関数は、urlpatternsというリストの中に記載します。以下のように記述すると覚えましょう。

path(アクセスするアドレス, 呼び出す処理, name=パス名)

第1引数にアドレスを指定し、第2引数に実行する処理を指定します。

第一引数は「‘ ‘」と記載すると、urls.pyを格納しているアプリケーション管理フォルダ(App_Folder)をサーバーにて動作させた際、初めに処理が実行されます。

path関数記載の呼び出す処理には、同ディレクトリにあるview.pyの関数を呼び出すこととします。その場合、まず「from . import views」とインポートします。次に、path関数内の呼び出す処理内容記載部分に、「views.関数名」と記載します。(今回の例だとviews.indexと記載しており、これは、index関数という予め定義された関数がview.pyにある前提としています。)

これでアプリケーションフォルダ内のurls.pyの準備は完了です。次は、実際にこのurls.pyを機能させるために、プロジェクトフォルダ内のurls.pyを修正していきましょう。

プロジェクト管理フォルダ(Project_Folder)内のurls.py

プロジェクトフォルダ内のurls.pyに着目し、下記のようにコーディングします。

from django.contrib import admin
from django.urls import path
#Include関数をインポート
from django.urls import include

#path関数でApp_Folder内のurls.pyを読み込むために、include関数を記述
urlpatterns = [
    path('admin/', admin.site.urls),
    path('App_Folder/', include('App_Folder.urls')),
]

「include関数」を活用したURLマッピング手順

プロジェクトフォルダ内のurls.pyのコードにおいて論点を言うと、アプリケーション管理フォルダ毎にURLを管理する場合、include関数が重要な役割を果たします。include関数は、指定した引数に対応するモジュールを読み込む関数です。これにより、作成したアプリケーション管理フォルダ内にあるurls.pyを読み込み、プロジェクト管理フォルダ内のurls.pyと紐付けることができます。include関数のみ利用した場合、コードの抜粋は以下のようになります。

from django.urls import include

#urlパターンを指定
urlpatterns = [
    path('App_Folder/', include('App_Folder.urls')),
・・・
]

Include関数の中身は「include(アプリケーションフォルダにあるurls.pyのディレクトリ)」という形で記載されています。

接続テスト

これで全てのurls.pyの改修が完了です。確認として、ローカルサーバーが起動し、指定したアドレスで処理内容が反映されているか確認してみましょう。(Macの場合はターミナル、Windowsの場合はコマンドプロンプトを用いると良いでしょう)

python manage.py runserver

次に、以下のアドレスにアクセスし、確認します。今回の場合、アプリケーション管理フォルダには「App_Folder」と入力します。views.pyで記述した処理が正しく反映されていれば、うまく動作していると言えます。

http://localhost:8000/アプリケーション管理フォルダ名/

Djangoまとめ

最後までご覧いただきありがとうございました。当サイトではDjangoフレームワークを用いた用途別解説記事を多数取り扱っております。是非合わせてご覧ください。

Djangoを学習したい方向けにおすすめできる教材も紹介しています。是非ご覧下さい。

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
URLをコピーする
URLをコピーしました!
目次
閉じる