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

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

Form do carrinho

Form do carrinho

Voltar para página principal do blog

Todas as aulas desse curso

Aula 45               Aula 47

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

Todas as aulas desse curso

Aula 45              Aula 47

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 😉

 

About The Author
-

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>