TL;DR
素人基盤エンジニアがDockerでDjangoを触るシリーズ③:django adminの続き。
1から読みたい場合は↓こちら。
素人基盤エンジニアがDockerでDjangoを触るシリーズ①:DockerでDjangoを作る
今回もDjango Girlsのサンプルを作りながらdjangoと戯れる。
ユーザがアクセスしてきたURLによって処理を行うviewを決定するために使う、urls.pyというファイルについて学ぶ。元々その③と一緒に投稿しようとしていたが長すぎて分割したという経緯もあり、短めな回。
urls.py
ユーザがアクセスしたURLに対してどのviewで処理するかを決めるために、urls.pyというファイルを編集してマッピングを行う必要がある。
第三回までの手順をなぞっていると、http://IPADDRESS:8000
にアクセスしたとき、まだロケットのページが見えていると思うが、これはurls.pyを編集していないため。(TemplateやViewも必要だが。。)
①プロジェクトのurls.pyの編集
urls.py
さっそく編集しよう。…と思ったところで異変に気付く。
下記はデフォルトのurls.py。
from django.conf.urls import url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', admin.site.urls),
]
django 1.X系では、URLを指定する際、django.conf.urls.url
というメソッドを使い、正規表現を利用してURLを表現してやる必要があった。django 2.X系からはパスコンバータという機能が備わっていて、正規表現を使わないでもこのファイルを記載できるようになっているらしいのだが、私の環境ではなぜかデフォルトのひな型が1.X系のものになっているようだった。
Django Girlsのサンプルも2.X系の書き方になっているし、どちらかといえば新しいほうがいいだろう。。
今回起動しているdjangoのバージョンは2.2.12なので、パスコンバータは問題なく動作するはず。ということで中身をそっくりそのまま下記に書き換えてしまう。
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('blog.urls')),
]
よくわかる解説
from django.contrib import admin
デフォルトのadmin画面のモデルを指定する際に利用するモジュール。
from django.urls import path, include
pathは前述したパスコンバータを利用するためのメソッド。1.X系のurlと比べて、正規表現を利用せずに指定できていることがわかる。
includeは、別のurlsファイルへ転送するためのメソッド。blogに関する設定はできる限り一つのディレクトリにまとめたほうがわかりやすいということもあり、今回はルートパスへのアクセスはすべてblog/urls.py
に記載した設定を反映することとする。
②アプリケーションのurls.pyの編集
urls.py
ということで、blogディレクトリの下に新しくurls.pyというファイルを作成し、下記の通り記載する。
from django.urls import path
from . import views
urlpatterns = [
path('', views.post_list, name='post_list'),
]
よくわかる解説
from . import views
同一ディレクトリ上のviews.pyをimportする。
urlpatterns = [
path('', views.post_list, name='post_list'),
]
ルートパスにアクセスが来た場合、views.pyの中の、post_listで処理を行う。
もちろん、post_listなぞまだ作ってすらいないので、この状態で起動をするとエラーが発生する。
次回はお待ちかねのViewを作成していく。あと少しでwebアプリケーションが出来上がる予定なので、頑張っていこう。
つづく