這讓我瘋狂。我正在建立一個電子商務應用,購物車在Django-carton。當我將商品添加到購物車時,我可以將商品的ID從上下文中獲取到商店中,並在客戶通過點擊按鈕添加商品時將其傳遞到我的Ajax調用和視圖中。用Ajax從django-carton中刪除項目
我希望客戶能夠使用按鈕刪除和編輯購物車中的數量,並且現在正在嘗試創建我的刪除和編輯數量功能。我卡住了,因爲我不明白如何在Ajax中傳遞視圖的id。該id不在項目上下文對象中。我可以通過打印ids = request.session['CART']
獲得視圖中的ID,但它沒有當前的ID。在上下文中的項目僅限於以下情況:
self.product = product
self.quantity = int(quantity)
self.price = Decimal(str(price))
Django的紙箱的文檔中的例子有這個例子,它不使用JavaScript:
觀點:
def remove(request):
cart = Cart(request.session)
product = Product.objects.get(id=request.GET.get('id'))
cart.remove(product)
return HttpResponse("Removed")
網址:
u`rl(r'^remove/$', 'remove', name='shopping-cart-remove'),`
在我看來,我可以得到購物車中所有物品的ID與
cart = Cart(request.session)
ids = request.session['CART']
這給了我下面的對象:
{u'meal_pk': 15, u'price': u'5', u'quantity': 39}
但這實際上並沒有顯得有幫助。這是我第一次見面。我一直在閱讀代碼https://github.com/lazybird/django-carton/blob/master/carton/cart.py
如何編輯或刪除購物車中的物品?
原諒可能是愚蠢的問題 - 與會話我可以在JS編輯,並在所有不使用我的意見?我很困惑這是如何工作的。 – fstopzero
只能通過後端訪問會話,因此您必須創建視圖/端點來更新或檢索會話變量。以上情況發生了什麼:單擊項目的刪除按鈕時,使用JQuery對Django視圖'remove'進行Ajax調用。 Django反過來執行視圖,從會話中刪除項目。從那裏,你可以包含代碼來刪除客戶端通過JS查看的頁面上的項目。如果您從購物車中移除某件商品,然後再次調用購物車視圖,則該商品不會顯示。 –