データベースからリストを作る
CoddyのDjangoジャーニー「モデルと管理サイト」セクションの一部。レッスン 13/23。
ホームページには、ビューに直接入力された3つのタイトルがまだ表示されています。ページとモデルはビューでつながります。ビューはORMに行を問い合わせ、以前リストを渡したのと同じように、QuerySetをテンプレートに渡します。まだ読んでいない本のページは次のようになります。
from django.shortcuts import render
from .models import Book
def to_read(request):
books = Book.objects.filter(is_read=False)
return render(request, "books/to_read.html", {"books": books})from .modelsのドットは、このアプリ自身のフォルダーを意味します。テンプレートでは、ループの各項目はBookなので、{{ book.title }}と{{ book.price }}でそのフィールドを読み取り、{{ book }}だけならその__str__を出力します。
チャレンジ
簡単books/views.pyで、入力されたリストの代わりに、データベース内のすべての本をbooksとしてテンプレートに渡します。home.htmlで、各本をタイトルと年を括弧で囲んで表示します。たとえば、Dune (1965)のようにします。
「実行」を押して/を開きます。「シェル」タブで本を追加し、ページを再読み込みすると、その本がリストに表示されます。
自分で試してみよう
from django.shortcuts import render
def home(request):
books = ["Dune", "Emma", "The Hobbit"]
return render(request, "books/home.html", {"books": books})
モデルと管理サイトのすべてのレッスン
自分で練習してみよう: Djangoプレイグラウンド