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:
Melhore seu NETWORKING
Participe de comunidades de desenvolvedores:
Fiquem a vontade para me adicionar ao linkedin.
Código final da aula:
Toti:
Backing track / Play-along:
Código Fluente
Putz!
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
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
e
Veja se tá calculando e mostrando direitinho no carrinho.
Por essa aula é só, nos vemos na próxima. :)
Código final da aula:
Outros canais
Toti:
Backing track / Play-along:
Código Fluente
Putz!
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:
É isso, ficamos por aqui \o/ e até a próxima 😉