Djangoを用いて以下の画像のようなhtmlを描画したいと思っています。
画像はJinja2を用いて描画したhtmlですが、Djangoで再現することができません。
具体的には[loop.index0]の部分コードをどのように改変すればうまく動くのかわかりません。
ご存じの方、どうかご教示よろしくお願いいたします。
views.py
Python3
1from django.shortcuts import render 2from django.http import HttpResponse 3from .forms import MyForm 4from .search import main 5 6def index(request): 7 params = { 8 'result_shop_name': 'ショップ名', 9 'result_link': '#', 10 'result_price': '価格', 11 'result_name': ['商品名1', '商品名2'], 12 'result_img': '#', 13 "form":MyForm() 14 } 15 if (request.method == 'POST'): 16 result = main(request.POST["search"], request.POST['price']) 17 result_name = result[0] # result[0]の値→["apple", "orange", "banana"] 18 result_price = result[1] # result[1]の値→[120, 80, 150] 19 result_link = result[2] # result[2]の値→["http://example.com/", "http://example.com/", "http://example.com/"] 20 result_img = result[3] # result[3]の値→["http://example.com/apple.png", "http://example.com/orange.jpg", "http://example.com/banana.webp"] 21 result_shop_name = result[4] # result[4]の値→["shop_a", "shop_b", "shop_c"] 22 23 params['result_name'] = result_name 24 params['result_price'] = result_price 25 params['result_link'] = result_link 26 params['result_img'] = result_img 27 params['result_shop_name'] = result_shop_name 28 params['form'] = MyForm(request.POST) 29 return render(request, "fruits/template.html", params)
以下のコードはjinja2で理想的な描画ができたときのものです。
質問を言い換えるなら、
「jinja2における[loop.index0]に相当するようなDjangoの変数?はないのでしょうか?」
ということになります。
templates/fruits/template.html
html5
1<section class="section"> 2 <div class="columns is-multiline grid"> 3 <!-- ループ開始 --> 4 {% for i in result_name %} 5 <div class="column is-one-fifth grid-item"> 6 <div class="card"> 7 <div class="card-image"> 8 <figure class="image"> 9 <img src="{{result_img[loop.index0]}}"> 10 </figure> 11 </div> 12 <div class="card-content"> 13 14 <div class="content"> 15 <a href="{{result_link[loop.index0]}}">{{i}}</a> 16 </div> 17 </div> 18 <footer class="card-footer"> 19 <div class="card-footer-item">¥{{result_price[loop.index0]}}</div> 20 <div class="card-footer-item">{{result_shop_name[loop.index0]}}</div> 21 </footer> 22 </div> 23 </div> 24 {% endfor %} 25 <!-- ループ終了 --> 26 </div> 27</section>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。