DjangoでListViewを試してみる

DjangoでListViewを試してみる

ListViewを作成。
テンプレート名はデフォルトで「template_name = 'モデル名_list.html'」が指定される。

$ vi books/views.py
from django.views.generic import ListView
from .models import Book

class BookList(ListView):
    model = Book

urls。

$ vi books/urls.py
・・・
urlpatterns = [
    path('', views.BookList.as_view(), name='book_list'),
]

テンプレートの置き場を作成し、

$ mkdir books/templates
$ mkdir books/templates/books

テンプレートを作成。

$ vi books/templates/books/book_list.html
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
</head>
<body>
  {% for book in object_list %}
  {{ book.title }}({{ book.price }}円)<br>
  {% endfor %}
</body>
</html>

Djangoを起動すると、

$ python3 manage.py runserver 0.0.0.0:8000

下記のような感じで表示される。
f:id:yk5656:20210504105640j:plain

querysetを指定して、好みの検索結果を表示することもできる。

$ vi books/views.py
・・・
class BookList(ListView):
    model = Book
    queryset = Book.objects.filter(price__gt=3000).order_by('-price')

f:id:yk5656:20210504105653j:plain