Add, Remove, Update のCart機能をつけていく
carts/views.py のコードを書いていく
from django.views.generic import View
from django.http import HttpResponseRedirect
from django.shortcuts import render
# Create your views here.
class CartView(View):
def get(self, request, *args, **kwargs):
item = request.GET.get("item")
qty = request.GET.get("qty")
print (item,qty)
return HttpResponseRedirect("/")
eccomerce2/urls.py に cartのurlを追記する。
from carts.views import CartView
...
urlpatterns = [
...
url(r'^cart/$', CartView.as_view(), name='cart'),
]
carts/views.py を修正する。
from django.views.generic import View
from django.http import HttpResponseRedirect
from django.shortcuts import render, get_object_or_404
# Create your views here.
from products.models import Variation
from carts.models import Cart, CartItem
class CartView(View):
# def getは、Viewにもともと備わっているget を上書きしている。
def get(self, request, *args, **kwargs):
item_id = request.GET.get("item") # requestのGETメソッドで、itemkeyのvalueをitem_idに代入する。
if item_id:
item_instance = get_object_or_404(Variation, id=item_id) #item_instanceは、Variationのitem_idで抽出したinstanceを代入。
qty = request.GET.get("qty") # requestのGETメソッドで、qtykeyのvalueをqtyに代入
cart = Cart.objects.all()[0] # Cart のインスタンスの一番最初(つまりCartのpk=1のインスタンスをcartに代入する。
cart_item = CartItem.objects.get_or_create(cart=cart, item=item_instance)[0] #CartItemに、cart(Cartのinstance)とitemを渡して、CartItemのinstanceを作成する
cart_item.quantity = qty # cart_item (Cartitemのinstance)のquantity にqtyを代入する。
cart_item.save() # cart_item(CartItemのinstance)をsaveする。
print (cart_item)
return HttpResponseRedirect("/")
delete機能もつけてみる。
class CartView(View):
def get(self, request, *args, **kwargs):
item_id = request.GET.get("item")
delete_item = request.GET.get("delete")
if item_id:
item_instance = get_object_or_404(Variation, id=item_id)
qty = request.GET.get("qty")
cart = Cart.objects.first()
cart_item = CartItem.objects.get_or_create(cart=cart, item=item_instance)[0]
if delete_item:
cart_item.delete()
else:
cart_item.quantity = qty
cart_item.save()
return HttpResponseRedirect("/")