1つのアプリケーションに対してURLマッピングする方法
前回の記事でDjangoプロジェクトのURLマッピングについて説明した。
この記事では、include(django.urls.include)を用いて、各アプリケーションに対してURLマッピングする方法を記載する。
djangoでは、各アプリケーションのurls.pyでviewのURLマッピングを行い。プロジェクトのurls.pyで各アプリケーションのurls.pyをincludeする
実例は以下の通り
Example
- project/urls.py
from django.urls import path
from django.conf.urls import include #includeのインポート
urlpatterns = [
path('admin/', admin.site.urls),
path('app/', include('app.urls')),# URL: http://○○○.×××/app/に、appアプリケーションフォルダのurls.pyが紐づく
次に、アプリケーション(app)にurls.pyを作成し、以下のように記載する。
- app/urls.py
from firstapp import views
app_name = 'app' # これは、他のテンプレートからviewを呼び出す際に用いるが、この記事では無関係
urlpatterns = [
path('index', views.index, name='index'), #urlに/app/indexと入力するとviews.pyのindex関数が呼び出される。(nameは他のテンプレートからviewを呼び出す際に用いるが、この記事では無関係)
]
このようにすると、以下のような形で、URLマッピングされて、http://○○○.○○○.○○○/app/indexで接続すると、app内のviews.indexが実行される
ちなみにフォルダ構成は以下のようになっている。
views.pyには以下のように記述する。
- firstapp/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello World")
Djangoの実行(python manage.py runserver)して、"http://127.0.0.1:8000/app/hello"にアクセスすると以下のように表示される。
- app/index表示結果
複数のアプリケーションに対してURLマッピングする方法
Djangoで複数のアプリケーションを用いて、それぞれ、のアプリケーションにURLマッピングすることも行われる。
これには、1つの場合と同様の方法で、プロジェクトのurls.pyのincludeを増やせばよい。
Example
- project/urls.py
from django.urls import path
from django.conf.urls import include #includeのインポート
urlpatterns = [
path('admin/', admin.site.urls),
path('app1/', include('app1.urls')),#app1に対するマッピング
path('app1/', include('app2.urls')),#app2に対するマッピング
]
以上、includeを用いたアプリケーションのURLマッピングでした。