2016-04-18 4 views
0

ショッピングカートを実装しようとしていて、以下のビューを作成しました。最初の2つのcart_add(request, product_id)cart_remove(request, product_id)は、セッションに格納されたカートにアイテムを追加したり削除したりします。その後、それぞれがcart_detail(request)ビューにリダイレクトされ、カートの現在のコンテンツがテンプレートに返されます。jsonからデータを取得する方法、またはdjangoでフォーマットする方法

@require_POST 
def cart_add(request, product_id): 
    cart = Cart(request) 
    product = get_object_or_404(Product, id=product_id) 
    form = CartAddProductForm(request.POST) 
    if form.is_valid(): 
     cd = form.cleaned_data 
     cart.add(product=product, quantity=cd['quantity'], update_quantity=cd['update']) 

    return redirect('cart:cart_detail') 


def cart_remove(request, product_id): 
    cart = Cart(request) 
    product = get_object_or_404(Product, id=product_id) 
    cart.remove(product) 
    return redirect('cart:cart_detail') 


def cart_detail(request): 
    cart = Cart(request) 
    return render(request, 'cart/detail.html', {'cart': cart}) 

私はカートにいくつかの製品を追加したが、私が手JSONはそうのようになります。

{'product': '[{"model": "resource_manager.product", "pk": 6, "fields": {"created": "2016-04-17T12:33:43Z", "updated": "2016-04-18T10:45:17Z", "name": "Workbook", "image": "resource_manager/2016/04/18/20130405_171035.jpg"}}]', 'quantity': 12} 
{'product': '[{"model": "resource_manager.product", "pk": 1, "fields": {"created": "2016-04-16T04:13:34Z", "updated": "2016-04-17T12:25:45Z", "name": "Radio", "image": ""}}]', 'quantity': 2} 
{'product': '[{"model": "resource_manager.product", "pk": 2, "fields": {"created": "2016-04-16T11:15:57Z", "updated": "2016-04-17T12:25:45Z", "name": "Mat", "image": ""}}]', 'quantity': 9} 
{'product': '[{"model": "resource_manager.product", "pk": 4, "fields": {"created": "2016-04-17T07:42:54Z", "updated": "2016-04-17T12:25:45Z", "name": "Tablet", "image": ""}}]', 'quantity': 3} 

質問:私は、テンプレート内の各製品の、名前にアクセスするにはどうすればよいcart/detail.html

ここ

は、私が試したものです:

{% for item in cart %} 
      {% with product=item.product %} 
       <tr> 
        <td> 
         <a href="{{ product.get_absolute_url }}"> 
          <img src="{% if product.image %}{{ product.image.url }}{% else %}{% static "resource_manager/img/no_image.png" %}{% endif %}"> 
         </a> 
        </td> 
        <td>{{ item.name }}</td> 
        <td>{{ item.quantity }}</td> 
        <td><a href="{% url "cart:cart_remove" product.id %}">Remove</a></td> 
       </tr> 
      {% endwith %} 
     {% endfor %} 

答えて

0

あなたはほとんどそこにあります。キーproductの値を反復処理するだけです。ここで

は、これを行う1つの方法です:

{% for key, value in cart.items %} 
    {% if key == 'product' %} 
     {% for product in value %} 
     <tr> 
      <td> 
       <a href="{{ product.get_absolute_url }}"> 
        <img src="{% if product.image %}{{ product.image.url }}{% else %}{% static "resource_manager/img/no_image.png" %}{% endif %}"> 
       </a> 
      </td> 
      <td>{{ item.name }}</td> 
      <td>{{ item.quantity }}</td> 
      <td><a href="{% url "cart:cart_remove" product.id %}">Remove</a></td> 
     </tr> 
     {% endfor %} 
    {% else %} 
     {# do something else.. #} 
    {% endif %} 
{% endfor %} 
関連する問題