見出し画像

Djangoのurls.py

 Djangoフレームワークで練習がてらアプリを作成しようと思いましたが、
その際にurls.pyについて学んだことを整理したいと思います。
 Djangoそのものの説明については省いておりますので、その辺りから知りたい人は別途調べていただければと思います。


urls.py

urls.pyの動き

 urls.pyファイルの前に、Djangoフレームワークにはプロジェクトとアプリについて説明が必要かと思います。Djangoのアプリは一般的なアプリケーションという意味ではなく、「機能」の意味で使われており、プロジェクトは各アプリを統率する役目を担っています。
 そして、プロジェクトとアプリ双方にurls.pyというファイルがあります。
このファイルは主にそれぞれのURLリクエストの際に、レスポンスとして何を返すかを定義したファイルになります。
 プロジェクトのurls.pyが先に動くのですが、大抵は各アプリのurlsファイルに飛ばすだけのことが多く、一方でアプリのurls.pyファイルは各リクエストの際にどのレスポンスを返すかという具体的な内容が定義されていることが多いです。

各リクエストとレスポンスについては、リスト型の変数であるurlpatterns=[]の中で定義されていますが、その際に使用するpathメソッドにてURLリクエストとレスポンスが紐づけられています。

アプリのurls.py

from django.urls import path
from .views import tax_calc_func

urlpatterns = [
    path('', tax_calc_func, name='tax_calc'),
]

 アプリのurls.pyについてコードを記載します。path関数は第一引数にHTTPリクエスト、第二引数にリクエストに紐づくクラス名もしくは関数名、第三引数にページ名(htmlファイル)を取るようになっています。上記を例とすると、HTTPリクエストがデフォルトの際はtax_calc_func関数を呼び出す。

from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('tax_calc_app.urls')),
]

プロジェクトのurls.pyも基本は同じですが、上記のように、include関数が使用されていることが多いです。include関数は引数にあアプリフォルダのurls.pyファイルのディレクトリ名が記載されていることが多く、野球の中継プレーでいうカットマンの役割(野球知らない人ごめんなさい)を果たします。include関数を書くことで引数のアプリフォルダにあるurls.pyにリクエストを中継します。

urls.pyはもっと奥が深いので調べれば色々と書けると思いますが、とりあえず自分が今知っている内容をまとめてみました。





この記事が気に入ったらサポートをしてみませんか?