1st Project [ wesop! ] -3 CODE Review - My team
19834 ワード
プロジェクトのメリットは、複数の人が協力して目標を達成することです.Wesopプロジェクトはバックエンド開発者として参加した最初のプロジェクトで、苦労したチームメンバーのコードを振り返りたいと思います.
Cart models.py
from django.db import models
from products.models import Product
from users.models import User
from cores.timestamp import TimeStamp
class Cart(TimeStamp):
user = models.ForeignKey(User, on_delete=models.CASCADE)
product = models.ForeignKey(Product, on_delete=models.CASCADE)
quantity = models.IntegerField(default=1)
class Meta:
db_table = 'carts'
電子商取引のウェブサイトの上の花はショッピングかごと決済しますか?そのカート部分はチームメンバーが制作を担当しています.Cart views.py
import json
from django.http import JsonResponse
from django.views import View
from cores.utils import author
from carts.models import Cart
class CartView(View):
@author
def post(self, request):
try:
data = json.loads(request.body)
cart, created = Cart.objects.get_or_create(
user = request.user,
product_id = data['product_id']
)
if not created and cart.quantity < 20:
cart.quantity += 1
cart.save()
return JsonResponse({'message': 'SUCCESS'}, status=200)
elif not created and cart.quantity > 19:
return JsonResponse({'message': 'INVALID_QUANTITY'}, status=200)
else:
return JsonResponse({'message': 'SUCCESS'}, status=201)
except Cart.DoesNotExist:
return JsonResponse({'message': 'CART_DOES_NOT_EXIT'}, status=400)
except KeyError:
return JsonResponse({'message': 'KEY_ERROR'}, status=400)
@author
def get(self, request):
user = request.user
carts = Cart.objects.filter(user=user)
if not carts.exists():
return JsonResponse({'message': 'INVALID_USER'}, status=400)
result = [{
'userId' : user.id,
'cartId' : cart.id,
'quantity' : cart.quantity,
'productId' : cart.product.id,
'productName' : cart.product.name,
'productSize' : cart.product.size,
'totalPrice' : int(cart.quantity * cart.product.price)
} for cart in carts]
return JsonResponse({'message': result}, status=200)
@author
def patch(self, request, cart_id):
try:
data = json.loads(request.body)
user = request.user
quantity = data['quantity']
if quantity <= 0 or quantity >= 21:
return JsonResponse({'message': 'INVALID_QUANTITY'}, status=400)
if Cart.objects.filter(id=cart_id).exists():
cart = Cart.objects.get(id=cart_id, user=user)
cart.quantity = data['quantity']
cart.save()
return JsonResponse({'message': 'QUANTITY_CHANGED'}, status=201)
return JsonResponse({'message': 'CART_DOES_NOT_EXIT'}, status=404)
except KeyError:
return JsonResponse({'message': 'KEY_ERROR'}, status=400)
@author
def delete(self, request):
try:
cart_ids = request.GET.getlist('cart_ids')
user = request.user
if not cart_ids:
return JsonResponse({'message': 'LIST_EMPTY'}, status=400)
Cart.objects.filter(id__in=cart_ids, user_id=user).delete()
return JsonResponse({'message': 'CART_DELETED'}, status=200)
except ValueError:
return JsonResponse({'message': 'VALUE_ERROR'}, status=400)
ボタンを押すたびに、商品の数によって、dbが反応する様子を見ると、喜びが忘れられません.もし時間があれば、私も良い答案を書くべきだと思います.Reference
この問題について(1st Project [ wesop! ] -3 CODE Review - My team), 我々は、より多くの情報をここで見つけました https://velog.io/@soohun9909/1st-Project-wesop-2-팀원이-작성한-CODEテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol