データベースからリストを作る
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)のようにします。
ShellタブでBook.objects.create(title="Beloved", author="Toni Morrison", year=1987, price="13.00")と入力し、/を再読み込みします。一覧の先頭にBeloved (1987)が表示されます。
自分で試してみよう
from django.shortcuts import render
def home(request):
books = ["Dune", "Emma", "The Hobbit"]
return render(request, "books/home.html", {"books": books})
モデルと管理サイトのすべてのレッスン
自分で練習してみよう: Djangoプレイグラウンド