Aula 45 – Loja Online – Django – Carrinho – Form

Aula 45 – Loja Online – Django – Carrinho – Form

Form do carrinho

Form do carrinho

Voltar para página principal do blog

Todas as aulas desse curso

Aula 44               Aula 46

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

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 45 – Loja Online – Django – Carrinho – Form

Vamos modificar a página de detalhes do produto.

O que estamos fazendo é, incluindo o template update-cart.html que iremos criar em seguida, e passando um contexto adicional usando o with e passando o produto e o carrinho.

django_ecommerce/products/templates/products/detail.html


{% extends "base.html" %}
{% block content %}
  <div class='row'>
    <div class='col-12 col-md-6'>
      <h1>{{ object.title }}</h1>
      {{ object.timestamp|timesince }} ago
      {{ object.description|linebreaks }}<br/>
      {% if object.image %}
        <img src='{{ object.image.url }}' class='img-fluid' />
       {% endif %}
    </div>
    <div class='col-12 col-md-6'>
      {% include 'products/snippets/update-cart.html' with product=object cart=cart %}
    </div>
  </div>
{% endblock %}

Vamos criar o update-cart.html.

Ele é bem parecido com o django_ecommerce/search/templates/search/snippets/search-form.html.

Só que ao invés do método GET vamos usar o método POST.

O csrf_token é um recurso de segurança que o Django oferece para prevenção de Cross Site Request Forgery.

django_ecommerce/products/templates/products/snippets/update-cart.html


<form method='POST' action='{% url "cart:update" %}' class="form"> {% csrf_token %}
  <input type='hidden' name='product_id' value='{{ product.id }}' />
  {% if product in cart.products.all %}
    In cart <button type='submit' class='btn btn-link'>Remover?</button>
  {% else %}
    <button type='submit' class='btn btn-success'>Adicionar</button>
  {% endif %}
</form>

Agora abra o e_commerce/carts/views.py

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", {})

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

http://localhost:8000/products/

Agora escolha um produto qualquer e clique em Detalhe.

Na página de detalhe do produto, clique em adicionar ao carrinho.

Agora entre na parte de administração do site, vá em cart, veja que foi criado um com os produtos que você adicionou.

http://localhost:8000/admin/

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

Voltar para página principal do blog

Todas as aulas desse curso

Aula 44               Aula 46

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>