urls.py

urls.pyとルーティング

configフォルダにあるurls.pyはシステム内のルーティングを作成するのに必要なファイルです。ここにURLパスとviews.pyで作成した関数名、そのURLに紐づいた名前(name)を設定することでルーティングを設定することができます。

Djangoでのルーティングの仕組み

Djangoでルーティングを構築するには、追加した各appにurls.pyを手動で追加して、そのファイルをconfigフォルダ内のurls.pyで読み込むのが一般的です。

configフォルダにシステム内の全てのルーティングを記述することもできますが、これをすると作成したURLが多い時かなりの数の行数になってしまうため、各appにてURLを記述して、configフォルダのurls.pyにそのファイルを読み込むことができます。
またこれは、Djangoのincludeという機能を使うことで実装できます。

プロジェクトを作成した時、configフォルダのurls.pyがデフォルトで以下のようになっています。

sample_project/urls.py

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

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

デフォルトでは、管理者画面のルーティングのみ構築されている状態になっています。
path('admin/', admin.site.urls)
上記は、/adminというパスに管理者画面のルーティングを設定しています。
例えば、以下のようにすると管理者画面のURLパスをよりセキュアにすることが可能です。
path('j4kfik39fj/', admin.site.urls)

ルーティングは自由に設定することができるので色々触ってみると良いでしょう。

プロジェクト作成時、または新しいappを追加した時ルーティングを設定する手順は以下になります。

appフォルダにurls.pyを追加してルーティングを作成する
configフォルダのurls.pyにapp/urls.pyを読み込む

1.appフォルダにurls.pyを追加してルーティングを作成する

追加したappをルーティング設定するために行う一般的な方法が、appフォルダにurls.pyを追加することです。

作成したapp(ここではaccount)フォルダにurls.pyを新しく作成してみましょう。

作成したらaccount/views.pyに関数を追加します。

account/views.py

from django.http import HttpResponse

def index(request):
    return HttpResponse(200)

views.pyに関数を追加したら、urls.pyに作成した関数を読み込んでルーティングを作成します。

account/urls.py

from django.urls import path
from . import views

app_name= 'account'
urlpatterns = [
    path('sample', views.index, name='index'),
]

これでappフォルダのurls.pyの作成は完了です。

2.configフォルダのurls.pyにapp/urls.pyを読み込む

次にconfigフォルダのurls.pyで先ほど作成したurls.pyを読み込みます。
そのためにincludeという機能を使います。

sample_project/urls.py

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

urlpatterns = [
    path('admin/', admin.site.urls),
    # accountのurls.pyを読み込み
 path('', include('account.urls')),
]

これでプロジェクトにaccountのurls.pyで設定したルーティングが追加されました。
これによって、http://127.0.0.1:8000/sample にアクセスすると200という文字が返ってきます。
またバックエンド側でもルーティングを取得することができます。

from django.urls import reverse

url = reverse('account:index')

上記でurlの変数に先ほどaccountで追加したルーティングが代入されます。

さいごに

ルーティングを追加できるようになれば開発の新規実装も滞るようになります。

ドキュメントを最初からここまで見てきた場合、これで基本的なDjangoの開発実装を進める手順が網羅されています。

ここからは、
modelsにデータベースの設定を書き込み
viewsでバックエンドを作り
urls.pyでルーティング設定をして
templatesにフロントエンドを追加していく流れになります。

ルーティングにはデータによって変わる動的なURLの設定などできることが様々にあります。少しずつ使いこなしていけると良いでしょう。