3
respostas

Carrinho de compras

Oi bom dia! tudo bem? Suponhamos que eu queira vender estes itens do jogoteca para pessoas. Como fazer um carrinho de compras?

Obrigada desde já! : )

3 respostas

Olá, Patricia! Como vai?

Para criar um carrinho de compras no Flask, você precisará ter uma compreensão básica de sessões no Flask, pois o carrinho de compras será armazenado na sessão do usuário.

Vamos ver um exemplo básico de como você pode fazer isso:

1 - Primeiro, você precisará importar a sessão do Flask no seu arquivo principal:

from flask import Flask, session

2 - Em seguida, você precisará configurar a chave secreta do aplicativo Flask. Isso é necessário para usar sessões no Flask:

app = Flask(__name__)
app.secret_key = 'secreto'

3 - Agora, suponha que você tenha uma rota para adicionar itens ao carrinho de compras. Você pode fazer algo assim:

@app.route('/add_to_cart/<int:product_id>')
def add_to_cart(product_id):
    if 'cart' not in session:
        session['cart'] = []
    session['cart'].append(product_id)
    return redirect(url_for('cart'))

Neste exemplo, quando o usuário acessa a rota '/add_to_cart/int:product_id', o produto com o id especificado é adicionado ao carrinho de compras. Se o carrinho de compras não existir (ou seja, se for a primeira vez que o usuário adiciona um item ao carrinho), um novo carrinho é criado.

4 - Por fim, você pode ter uma rota para visualizar o carrinho de compras:

@app.route('/cart')
def cart():
    return render_template('cart.html', cart=session['cart'])

Neste exemplo, a rota '/cart' renderiza um template 'cart.html' e passa o carrinho de compras para ele.

Lembre-se de que este é um exemplo muito básico e não inclui funcionalidades como remoção de itens do carrinho, atualização da quantidade de um item, etc. Para um carrinho de compras completo, você precisará provavelmente de um modelo de banco de dados para o carrinho e os itens do carrinho, entre outras coisas.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.

Olá, muito obrigada pela ajuda. Eu vou precisar de mais informações. eu ja tenho o banco de dados com os jogos cadastrados, session tudo prontinho. falta so o carrinho de compras e pagamento. eu fis estas rotas

@app.route('/add_to_cart/<int:id>')   #esse int:id foi como o professor pos no jogoteca, para puxar os dados do jogo
def add_to_cart(id):
    if 'cart' not in session:
        session['cart'] = []
    session['cart'].append(id)
    return redirect(url_for('cart'))

@app.route('/cart')
def cart():
    return render_template('cart.html', cart=session['cart'])

Na descricao do produto dentro do card eu pus essa rota <p ><a href="{{ url_for('add_to_cart', id=jogo.id) }}" . class="btn btn-sm btn-light">Carrinho</a></p> e seguiu sem problemas. No html do cart como eu faço para exibir isso? Como se faz para somar os itens do carrinho? E para deletar? Eu preciso da ajuda de voces.

Olá Patricia, como vai?

Para exibir os itens do carrinho, você precisa buscar os dados desses itens no banco de dados. Você pode fazer isso antes de renderizar o template 'cart.html'. Aqui está um exemplo:

@app.route('/cart')
def cart():
    items = [db.get_item(id) for id in session['cart']]  # substitua 'db.get_item' pela função que você usa para buscar um item no banco de dados
    return render_template('cart.html', cart=items)

No seu template 'cart.html', você pode iterar sobre os itens do carrinho para exibi-los:

{% for item in cart %}
    <p>{{ item.name }} - {{ item.price }}</p>
{% endfor %}

Para somar os itens do carrinho, você pode usar a função sum do Python. Aqui está um exemplo:

@app.route('/cart')
def cart():
    items = [db.get_item(id) for id in session['cart']]  # substitua 'db.get_item' pela função que você usa para buscar um item no banco de dados
    total = sum(item.price for item in items)
    return render_template('cart.html', cart=items, total=total)

E no seu template 'cart.html', você pode exibir o total:

<p>Total: {{ total }}</p>

Para permitir que os itens sejam removidos do carrinho, você pode criar uma nova rota que recebe o id do item a ser removido:

@app.route('/remove_from_cart/<int:id>')
def remove_from_cart(id):
    session['cart'].remove(id)
    return redirect(url_for('cart'))

E no seu template 'cart.html', você pode adicionar um link para remover cada item:

{% for item in cart %}
    <p>{{ item.name }} - {{ item.price }} <a href="{{ url_for('remove_from_cart', id=item.id) }}">Remover</a></p>
{% endfor %}

Mas, lembre-se de substituir a 'db.get_item' e 'item.price' pelos métodos e atributos correspondentes ao seu projeto.

Imagino que essas informações possam lhe ajudar.

Boa sorte!