Aula 46 - Loja Online - Django - Mostrando itens do carrinho

Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no Facebook

Esse é o link do código fluente no Pinterest

Meus links de afiliados:

Digital Innovation

Hostinger

Digital Ocean

One.com

Melhore seu NETWORKING

Participe de comunidades de desenvolvedores:

Fiquem a vontade para me adicionar ao linkedin.

E também para me seguir no https://github.com/toticavalcanti.

Código final da aula:

https://github.com/toticavalcanti

Toti:

https://www.youtube.com/channel/UCUEtjLuDpcOvR3mIUr-viOA

Backing track / Play-along:

https://www.youtube.com/channel/UCT3TryVMqTqYBjf5g5WAHfA

Código Fluente

https://www.youtube.com/channel/UCgn-O-88XBAwdG9gUWkkb0w

Putz!

https://www.youtube.com/channel/UCZXop2-CECwyFYmHbhnAkAw

Aula 46 - Loja Online - Django - Mostrando itens do carrinho

Hora de mostrar os itens que estão no carrinho.

Vamos adaptar um código do getbootstrap para o contexto do carrinho

https://getbootstrap.com/docs/5.0/content/tables/

O código adaptado vai ficar assim no nosso django_ecommerce/carts/templates/carts/home.html

django_ecommerce/carts/views.py


from django.shortcuts import render, redirect

from products.models import Product
from .models import Cart

def cart_home(request):
    cart_obj, new_obj  = Cart.objects.new_or_get(request)
    return render(request, "carts/home.html", {"cart": cart_obj})

def cart_update(request):
    print(request.POST)
    product_id = request.POST.get('product_id')
    if product_id is not None:
        try:
            product_obj = Product.objects.get(id = product_id)
        except Product.DoesNotExist:
            print("Mostrar mensagem ao usuário, esse produto acabou!")
            return redirect("cart:home")
        cart_obj, new_obj = Cart.objects.new_or_get(request) 
        if product_obj in cart_obj.products.all(): 
            cart_obj.products.remove(product_obj) 
        else: 
            cart_obj.products.add(product_obj)
    return redirect("cart:home")

Acesse

django_ecommerce/carts/templates/carts/home.html


{% extends "base.html" %}
{% block content %}
  <h1>Carrinho</h1>
  {% if cart.products.exists %}
    <table class="table">
      <thead>
        <tr>
          <th>#</th>
          <th>Nome do produto</th>
          <th>Preço do produto</th>
        </tr>
      </thead>
      <tbody>
        {% for product in cart.products.all %}
        <tr>
          <thscope="row">{{ forloop.counter }}</th>
          <td><a href='{{ product.get_absolute_url }}'>{{ product.title }}</a><small><a href='#'>Deseja remover?</a></small></td>
          <td>{{ product.price }}</td>
        </tr>
        {% endfor %}
        <tr>
          <tdcolspan="2"></td>
          <td><b>Subtotal</b> {{ cart.subtotal }}</td>
        </tr>
        <tr>
          <tdcolspan="2"></td>
          <td><b>Total</b> {{ cart.total }}</td>
        </tr>
      </tbody>
    </table>
  {% else %}
    <p class='lead'>Carrinho vazio</p>
  {% endif %}
{% endblock %}

O forloop.counter indica quantas vezes a tag for passou por seu loop.

Acesse

http://localhost:8000/admin/

e

http://localhost:8000/cart/

Veja se tá calculando e mostrando direitinho no carrinho.

Por essa aula é só, nos vemos na próxima. :)

Voltar para página principal do blog

Código final da aula:

https://github.com/toticavalcanti

Outros canais

Toti:

https://www.youtube.com/channel/UCUEtjLuDpcOvR3mIUr-viOA

Backing track / Play-along:

https://www.youtube.com/channel/UCT3TryVMqTqYBjf5g5WAHfA

Código Fluente

https://www.youtube.com/channel/UCgn-O-88XBAwdG9gUWkkb0w

Putz!

https://www.youtube.com/channel/UCZXop2-CECwyFYmHbhnAkAw

Se gostarem do conteúdo dêem um joinha 👍 na página do Código Fluente no Facebook

Esse é o link do código fluente no Pinterest

Meus links de afiliados:

Hostinger

Digital Ocean

One.com

É isso, ficamos por aqui \o/ e até a próxima 😉