ジェネリックビューは指定したモデルから全レコードを取り出したり、特定のIDのものだけ取り出す基本的機能を持ったビュー
ListViewは全レコードを取り出すためのジェネリックビュー
DetailViewは特定のレコードを取り出すためのジェネリックビュー
### ジェネリックビューで表示
/hello/views.py
from django.views.generic import ListView from django.views.generic import DetailView class FriendList(ListView): model = Friend class FriendDetail(DetailView): model = Friend
/hello/urls.py
from .views import FriendList from .views import FriendDetail urlpatterns = [ path('', views.index, name='index'), path('create', views.create, name='create'), path('edit/<int:num>', views.edit, name='edit'), path('delete/<int:num>', views.delete, name='delete'), path('list', FriendList.as_view()), path('detail/<int:pk>', FriendDetail.as_view()), ]
/hello/templates/hello/friend_list.html
<body class="container"> <h1 class="display-4 text-primary">Friends List</h1> <table class="table"> <tr> <th>id</th> <th>name</th> <th></th> </tr> {% for item in object_list %} <tr> <td>{{item.id}}</td> <td>{{item.name}}</td> <td><a href="/hello/detail/{{item.id}}">detail</a></td> </tr> {% endfor %} </table> </body>
/hello/templates/hello/friend_detail.html
<body class="container"> <h1 class="display-4 text-primary">Friends Detail</h1> <table class="table"> <tr> <th>id</th> <th>{{object.id}}</th> </tr> <tr> <th>name</th> <th>{{object.name}}</th> </tr> <tr> <th>mail</th> <th>{{object.mail}}</th> </tr> <tr> <th>gender</th> <th>{{object.gender}}</th> </tr> <tr> <th>age</th> <th>{{object.age}}</th> </tr> </table> </body>
なるほど