Aula 56 – Loja Online – Django – Billing Profile no Checkout View

Aula 56 – Loja Online – Django – Billing Profile no Checkout View

Loja Online - Django - Billing Profile no Checkout View

Loja Online – Django – Billing Profile no Checkout View

Voltar para página principal do blog

Todas as aulas desse curso

Aula 55               Aula 57

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

https://digitalinnovation.one/

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

Quer aprender python3 de graça e com certificado? Acesse então:

https://workover.com.br/python-codigo-fluente

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 56 – Loja Online – Django – Billing Profile no Checkout View

Billing profile para o usuário logado (login user) ou convidado (guest user)

Agora vamos implementar o Billing profile para o usuário logado (login user) ou convidado (guest user).

O usuário convidado, é o usuário que fornece apenas o email, ao invés de se registrar e logar.

O check-out de usuário convidado, permite que um cliente compre sem fazer login ou criar uma conta na loja.

Isso significa que as marcas não retêm nenhuma informação que os clientes insiram durante o processo de checkout.

Benefícios do Guest Checkout

Compras mais rápidas.

Um dos melhores benefícios para o consumidor, o processo demora menos.

Como eles não são obrigados a criar contas na loja, isso acaba reduzindo o atrito no processo de compra e ajudando os usuários a serem convertidos mais rápido.

Abandono de Carrinhos Reduzidos

De acordo com o BigCommerce, forçar os clientes a criar contas na loja resulta em maior abandono do carrinho.

Dessa forma, permitir que os clientes ignorem as contas e finalizem as compras com mais rapidez os ajudará a realizá-las mais rapidamente.

Problemas Com Check-Out de Convidado

Informação Limitada

As informações limitadas apresentam desafios principalmente para as empresas, mais do que para os consumidores, e os clientes que chegam pela primeira vez as apreciarão mais do que os clientes recorrentes.

Como resultado, sua empresa não poderá personalizar seus esforços de divulgação e marketing para esses usuários.

Como acontece com qualquer forma de marketing, quanto mais informações sua empresa tiver, melhor você poderá direcionar seus clientes em potencial.

Benefícios das Contas de Cliente 

Repetir compras com facilidade

Para os clientes que criam contas podemos manter e armazenar seus endereços de envio, endereços de e-mail e números de telefone em seus perfis online.

Portanto, quando fizerem suas próximas compras, essas informações entrarão automaticamente nos campos apropriados.

Embora a configuração da conta demore mais tempo no início, ela  permite a reutilização futura e acelera o tempo dos processos de checkout.

As contas de clientes são ideais para clientes recorrentes que visitam e interagem regularmente com seu site.

Estamos oferecendo no nosso ecommerce as duas opções.

Para essa, vamos começar fazendo o seguinte:

Abra o e_commerce/carts/views.py e faça as alterações que estão em azul no código abaixo.

e_commerce/carts/views.py


from django.shortcuts import render, redirect

from accounts.forms import LoginForm
from billing.models import BillingProfile
from orders.models import Order
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)
        request.session['cart_items'] = cart_obj.products.count()
    return redirect("cart:home")

def checkout_home(request):
    #aqui a gente pega o carrinho
    cart_obj, cart_created= Cart.objects.new_or_get(request)
    order_obj = None
    #se o carrinho acabou de ser criado, ele tá zerado
    #ou se o carrinho já existir mas não tiver nada dentro
    if cart_created or cart_obj.products.count() == 0:
        return redirect("cart:home")
    #aqui a order associada ao carrinho
    else:
        order_obj, new_order_obj = Order.objects.get_or_create(cart = cart_obj)
    user = request.user
    billing_profile = None
    login_form = LoginForm()
    if user.is_authenticated:
        billing_profile, billing_profile_created = BillingProfile.objects.get_or_create(user = user, email = user.email)
    context = {
        "object": order_obj,
        "billing_profile": billing_profile,
        "login_form ": login_form 
    }
    return render(request, "carts/checkout.html", context)

Agora vamos alterar o e_commerce/carts/templates/carts/checkout.html.

e_commerce/carts/templates/carts/checkout.html


{% extends "base.html" %}
{% block content %}
{% if not billing_profile %}
  <div class='row' text-center>
    <div class='col-12 col-md-6'>
      <p class='lead'>Login</p>
      {% include 'accounts/snippets/form.html' with form=login_form next_url=request.build_absolute_uri %}
    </div>
    <div class='col-12 col-md-6'>
      Continuar como convidado
    </div>
  </div>
{% else %}
  <h1>Checkout</h1>
  <p>Total do carrinho: {{ object.cart.total }}</p>
  <p>Frete: {{ object.shipping_total }}</p>
  <p>total: {{ object.total }}</p>
{% endif %}
{% endblock %}

Crie o e_commerce/accounts/templates/accounts/snippets/form.html.

e_commerce/accounts/templates/accounts/snippets/form.html 


<form method='POST' action='{% url "login" %}'> 
{% csrf_token %}
{% if next_url %}
<input type='hidden' name='next' value='{{next_url}}'/>
{% endif %}
{{ form }}
<button type='submit' class='btn btn-default'>Enviar</button>
</form>

Fico por aqui, na próxima seguimos na construção do billing.

Voltar para página principal do blog

Todas as aulas desse curso

Aula 55               Aula 57

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

Nos vemos na próxima então, \o/  😉 Bons Estudos!

 

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>