htmlファイルの作りこみ
次に、このクラスが呼び出されたときに表示されるhtmlファイル(つまり、booklist.htmlファイル)を作っていきましょう。
はじめの方で、settings.pyファイルを編集し、TEMPLATES = ['DIRS': [BASE_DIR, 'templates']]としたことを覚えていますか?
これは、htmlファイルなどを、BASE_DIR(manage.pyファイルが入っている階層)にあるtemplatesフォルダの中に入れますよ。という宣言しているものでした。
ですので、manage.pyが入っている階層で新しくtemplatesフォルダを作り、その中にbooklist.htmlファイルを作りましょう。
[コマンドライン]
-BASE
$ mkdir templates
[フォルダ構成]
bookproject
booklibrary
manage.py
templates ← new!
[コマンドライン]
$ cd templates
$ touch booklist.html
booklist.htmlファイルを開き、設定を進めていきましょう。
[コード]-BASE/templates/booklist.html
1 {% for item in object_list %}
2 {{ item.name }}
3 {% endfor % }
[アウトプット](1) 1行目のobject_listは、テーブルに入っているデータのことです。この場合は、models.pyファイルに入っているBookModelの情報が入っています。
これをfor文で順番に取り出し、それをitemに順番に入れていきます。
(2) item.booknameというのは、object_listから取り出されたデータの属性を示しています。
ちなみに、BookModelでは、bookname、summary、ratingの3つの属性を定義しました。
これで完成です。
最後に、urlとviewの関連付けがまだですので、この設定を進めていきましょう。
今回はlocalhost:8000/book/booklistというurlにするような設定をしていこうと思います。
[コード]-BASE/booklibrary/urls.py
from django.urls import path
from .views import BookListView, ← new!
urlpatterns = [
path('list/', BookListView.as_view(), name='list'), ← new!
]
これはhello worldの記事で書いた内容とほぼ同じですので、詳しい説明は省略します。
これで設定が完了しました。
サーバーを立ち上げて、localhost:8000/book/listでリクエストを投げてみましょう。
無事に本のリストが表示されていることが分かりました。