本サイトはdjangoで作成しています。
djangoの使用方法についてまとめています。
2356 views
djangoのコントローラーで2次元のリスト型のデータを作成してtemplatesに渡したときに、template側でどうやってアクセスするかについて調べました。
サンプルコードを以下に記します。
def index(request):
book_list = []
user = request.user
book_records = Book.objects.filter(user=user)
for record in records:
access_count = get_access_count(record.id)
book_list.append([record.title, access_count])
data = {'book_list': book_list}
render(request, "test.html", data)
{% for book in book_list %}
<p>タイトル:{{book.0}}</p>
<p>{{book.1}}</p>
{% endfor %}
controller.pyの2行目のdatalistがtemplate側に渡すためのリスト型。
7行目で[本のタイトル,アクセス数]をリスト形式で本の数だけ追加しています。
つまり、リストは二次元のリストです。
それを8行目でbooklist変数をセットし、9行目でrenderに渡します。
test.htmlでは、book_listをfor文で回して表示します。
bookがリストに格納されているデータになります。このデータは0番目に本のタイトル、1番目に本のアクセス数が入っています。
2行目は本のタイトルを表示するため、bookの0番目の要素にアクセスする必要がありますが、0番目の要素にアクセスするには
* book.0と指定します。
3行目は本のアクセス数を表示したいのでbookの1番目の要素にアクセスする必要があります。
1番目の要素にアクセスするには book.1*と指定します。
うっかり* book[0]、book[1]*と書いてしまいそうですが、これはdjangoの仕様で、ピリオドを指定してインデックスを指定する必要があります。
以上です。
Page 13 of 16.
すぺぺぺ
本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。
https://www.osumoi-stdio.com/novel/