2017-12-24 36 views
0

からすべての製品を削除し、[1]:https://github.com/lazybird/django-cartonを私の製品アプリにカート機能を追加します。カートに商品を追加したり、カートから商品を取り出したり、カートの内容を表示することができます。私はカートを空にする方法を解決しようとしています。ここで ジャンゴ[1]</p> <p>私は[ジャンゴ・カートン]を使用していますカート

はviews.pyです:

def add(request): 
    cart = Cart(request.session) 
    product = Product.objects.get(id=request.GET.get('id')) 
    cart.add(product, price=product.price) 
    return redirect('shopping-cart-show') 


def remove(request): 
    cart = Cart(request.session) 
    product = Product.objects.get(id=request.GET.get('id')) 
    cart.remove(product) 
    return redirect('shopping-cart-show') 


def show(request): 
    return render(request, 'shopping/show-cart.html') 

...と、ここで私はカートページ上の製品を表示しています方法は次のとおりです。私はいくつかの異なる方法を試してみた

{% for item in cart.items %} 
    <div class="col-md-6"> 
     <a href="/{{item.product.id}}/">{{ item.product }}</a> 
    </div> 
    <div class="col-md-2"> 
     <p>{{ item.quantity }}</p> 
    </div> 
    <div class="col-md-2"> 
     <p>${{ item.subtotal }}</p> 
    </div> 
    <div class="col-md-2"> 
     <a href="/shopping-cart/remove/?id={{ item.product.id }}" class="btn btn-sm btn-product">Remove</a> 
    </div> 
    {% endfor %} 

カートをクリアしてください。私は{{cart.clear}}をボタンに割り当てましたが、ボタンをクリックしたときにページをクリアしようとしているのに対し、これはまた、リフレッシュ時にページをクリアします。私はJava Scriptなしでこれを行うことを望んでいましたが、私は方法を見つけるのに苦労しています。すべての感謝の気持ちで助けてください。

EDIT:私のコメントパー

urlpatterns = [ 
    url(r'^add/$', views.add, name='shopping-cart-add'), 
    url(r'^remove/$', views.remove, name='shopping-cart-remove'), 
    url(r'^show/$', views.show, name='shopping-cart-show'), 
] 
+0

答えは、リンク先のGitHubページにあります。 –

+0

'cart.clear'を指していると私は動作しないと言いました... – Steve

+0

ビューで正しく呼び出すとうまくいきます。つまり、カートをクリアするビューに投稿する別のフォームが必要です。 –

答えて

0

を、これは、カートを空に達成するための最良の方法ではないかもしれません、しかし:

ここでそれが助け場合にはurls.pyですできます。ビューは次のとおりです。

def clear(request): 
    cart = Cart(request.session) 
    product = Product.objects.all() 
    cart.clear() 
    return redirect('shopping-cart-show') 

また、ビューのURLパターンも追加しました。私が言ったように、それは動作します。もっと良い方法があるかどうかは分かります。

0
def remove(request): 
    cart = Cart(request.session) 
    product = Product.objects.get(id=request.GET.get('id')) 
    if cart: 
     cart.delete(product) 
    else: 
     cart = Cart(request.session) 
     cart.save() 
    return redirect('shopping-cart-show') 
+0

Pythonの使用方法=> delete() –

+0

これは動作しません。 'AttributeError: 'Cart'オブジェクトに 'delete'という属性がありません。私は質問にurls.pyを追加しましたが、何が起こっているのか解明しようとしています。 1つの製品を削除するとコードが正常に機能します - カートを空にしようとしています。 – Steve

+0

これはこれを実行する最善の方法ではないかもしれませんが、私は以下のようにビューコール "clear"を作成しました。それは動作します...しかしそれは大丈夫ですか? 'defをクリア(リクエスト): カート=カート(ますrequest.session) 製品= Product.objects.all() cart.clear() リターンリダイレクト( 'ショッピングカート-ショー')' – Steve

関連する問題