Django 一覧画面と詳細画面の作成
初めに
前回に続いて本棚アプリケーションの作成を行いました。今回は一覧画面と詳細画面を作成しました。
これに対して行った具体的な手順をまとめます。
nissin-geppox.hatenablog.com
概要
- 一覧画面の設定
- 一覧画面のhtmlの作成
- 詳細画面の設定
- 詳細画面のhtmlの作成
一覧画面の設定
まず、一覧画面にアクセスするためのルーティング設定を行いました。
ルーティング設定としてurls.pyに以下のようなコードを追加しました。
from django.urls import path from . import views urlpatterns = [ path('book/', views.ListBookView.as_view()) ]
次に、以下のようにviews.pyに一覧表示用のclassを作成しました。
from django.shortcuts import render from django.views.generic import ListView from .models import Book class ListBookView(ListView): template_name = 'book/book_list.html' model = Book
一覧画面のhtmlの作成
一覧画面用のhtmlファイルを作成しました。
まず、以下のコマンドよりhtml用のディレクトリとhtmlファイルを生成しました。
$ cd book $ mkdir templates $ cd templates $ mkdir book $ cd book $ touch book_list.html
続いて、生成したbook_list.htmlに以下のコードを追加しました。
{% for item in object_list %} <ul> <li>{{ item.title }}</li> <li>{{ item.text }}</li> <li>{{ item.category }}</li> </ul> {% endfor %}
最後に、以下のコマンドよりサーバーを起動し、作成したhtmlファイルが表示されるかどうかを確認しました。
$ python3 manage.py runserver
ページは以下のように表示されました。
上の画像より正しく表示されることを確認することができました。
詳細画面の設定
まず、詳細画面にアクセスするためのルーティング設定を行いました。
ルーティング設定としてurls.pyに以下のようなコードを追加しました。
from django.urls import path from . import views urlpatterns = [ path('book/', views.ListBookView.as_view()), path('book/<int:pk>/detail/', views.DetailBookView.as_view()), ]
次に、以下のようにviews.pyに詳細画面用のclassを作成しました。
from django.shortcuts import render from django.views.generic import ListView, DetailView from .models import Book class ListBookView(ListView): template_name = 'book/book_list.html' model = Book class DetailBookView(DetailView): template_name = 'book/book_detail.html' model = Book
詳細画面のhtmlの作成
詳細画面のhtmlファイルを作成しました。
まず、以下のコマンドよりhtmlファイルを生成しました。
$ touch book/templates/book/book_detail.html
続いて、生成したbook_detail.htmlに以下のコードを追加しました。
{{ object.category }} {{ object.title }} {{ object.text }}
最後に、サーバーを起動し、URLからidが2の記事を指定し、作成したhtmlファイルが表示されるかどうかを確認しました。
ページは以下のように表示されました。
上の画像より、idを設定することにより、指定した記事のみを表示することができました。