diff --git a/Backend/momment/accounts/__pycache__/views.cpython-39.pyc b/Backend/momment/accounts/__pycache__/views.cpython-39.pyc index d06bcb39..34039abd 100644 Binary files a/Backend/momment/accounts/__pycache__/views.cpython-39.pyc and b/Backend/momment/accounts/__pycache__/views.cpython-39.pyc differ diff --git a/Backend/momment/accounts/serializers.py b/Backend/momment/accounts/serializers.py index fa7f6598..4b024f7c 100644 --- a/Backend/momment/accounts/serializers.py +++ b/Backend/momment/accounts/serializers.py @@ -1,2 +1,11 @@ from rest_framework.serializers import ModelSerializer, ReadOnlyField -from .models import Account +from .models import User +from rest_framework import serializers + +class UserSerializer(serializers.ModelSerializer): + + class Meta: + model = User + # fields = ('name', 'digit', 'birth', 'address') + # read_only_fields = ('email', 'password') + exclude = ('password',) \ No newline at end of file diff --git a/Backend/momment/accounts/views.py b/Backend/momment/accounts/views.py index e5c428c0..519a68eb 100644 --- a/Backend/momment/accounts/views.py +++ b/Backend/momment/accounts/views.py @@ -10,7 +10,7 @@ from rest_framework.permissions import IsAuthenticated from django.contrib import auth from rest_framework.decorators import api_view - +from .serializers import * # 카카오 로그인 @@ -31,13 +31,13 @@ def signup(request): data = json.loads(request.body) email = data['email'] - name = data['name'] - digit = data['digit'] - birth = data['birth'] - address = data['address'] - if request.method == 'POST': + name = data['name'] + digit = data['digit'] + birth = data['birth'] + address = data['address'] + password = data['password'] if User.objects.filter(email=email).exists(): @@ -56,16 +56,13 @@ def signup(request): return JsonResponse({'message' : 'SUCCESS', 'token' : token.key}, status=201) elif request.method == 'PUT': - + user = User.objects.get(email=email) - user.name = name - user.digit = digit - user.birth = birth - user.address = address - user.save() - - return JsonResponse({'message' : 'SUCCESS'}, status=201) + serializer = UserSerializer(user, data=data) + if serializer.is_valid(): + serializer.save() + return Response(serializer.data) except KeyError: return JsonResponse({'message' : 'KEY_ERROR'}, status=400) @@ -74,11 +71,9 @@ def signup(request): def login(request): try: data = json.loads(request.body) - email = data['email'] password = data['password'] - - user = User.objects.filter(email=email) + user = User.objects.get(email=email) if not check_password(password, user.get().password): return JsonResponse({'message' : 'WRONG_PASSWORD'}) diff --git a/Backend/momment/cakes/models.py b/Backend/momment/cakes/models.py index d9b16bb3..af83cb76 100644 --- a/Backend/momment/cakes/models.py +++ b/Backend/momment/cakes/models.py @@ -62,9 +62,6 @@ class CakeCandle(models.Model): price = models.IntegerField() cake = models.ForeignKey(Cake, on_delete=models.CASCADE, related_name='candle') - - - # 상품 상세 페이지용 class Location(models.Model): locate = models.CharField(max_length=24, primary_key=True) diff --git a/Backend/momment/cakes/serializers.py b/Backend/momment/cakes/serializers.py index e3a38188..e2831c1a 100644 --- a/Backend/momment/cakes/serializers.py +++ b/Backend/momment/cakes/serializers.py @@ -112,7 +112,7 @@ class CakeOnlySerializer(serializers.ModelSerializer): class Meta: model = Cake - fields = ('name', 'price', 'id') + fields = ('name', 'price',) # 메인 페이지에 케이크 보내줄 때 스토어 정보는 어떻게 보낼 것인가? class StoreCakeSerializer(serializers.ModelSerializer): @@ -125,8 +125,10 @@ class Meta: class CakeSearchSerializer(serializers.ModelSerializer): - store_name = serializers.CharField(source='store.store_name') + store_name = serializers.CharField(source='cake.store.store_name') + cake_name = serializers.CharField(source='cake.name') + cake_price = serializers.CharField(source='cake.price') class Meta: - model = Cake - fields = ['name', 'price', 'store_name'] \ No newline at end of file + model = CakeInfo + fields = ['cake_name', 'cake_price', 'store_name'] \ No newline at end of file diff --git a/Backend/momment/cakes/urls.py b/Backend/momment/cakes/urls.py index d3ad0c74..ef5346bb 100644 --- a/Backend/momment/cakes/urls.py +++ b/Backend/momment/cakes/urls.py @@ -9,5 +9,6 @@ path('detail', views.detail), path('main/', views.main), path('order', views.order), - path('search/', views.search) + path('search/', views.search), + path('filter/', views.filter) ] \ No newline at end of file diff --git a/Backend/momment/cakes/views.py b/Backend/momment/cakes/views.py index 2d3b0964..c58fdc9a 100644 --- a/Backend/momment/cakes/views.py +++ b/Backend/momment/cakes/views.py @@ -10,7 +10,7 @@ from rest_framework.response import Response from rest_framework.decorators import api_view - +# 판매자에게 모든 케이크 보여줌 @api_view(['GET']) def show(request): try: @@ -25,7 +25,6 @@ def show(request): return Response(cake_size.data,status=200) - except KeyError: return JsonResponse({'message' : 'KEY_ERROR'}, status=400) @@ -42,12 +41,8 @@ def cake(request): user = User.objects.get(email=user_email) store = Store.objects.get(user=user) - - # if CakeName.objects.filter(name=cake_name).exists(): - # CakeName.objects.update(name=cake_name, store=store) cake = Cake.objects.update_or_create(name=cake_name, price=cake_price, store=store)[0] - # cake = CakeName.objects.get(name=cake_name, store=store) basic_options = data['cake_basic_option'].keys() addtional_options = data['cake_additional_option'].keys() @@ -243,12 +238,17 @@ def detail(request): flavor = Flavor.objects.get(flavor=flavor) if CakeInfo.objects.filter(cake=cake).exists(): - CakeInfo.objects.update(locate=locate, flavor=flavor, price_range=price, info=info, cake=cake) + cake_info = CakeInfo.objects.get(cake=cake) + cake_info.locate = locate + cake_info.flavor = flavor + cake_info.info = info + cake_info.price_range = price + cake_info.save() else: CakeInfo.objects.create(locate=locate, flavor=flavor, price_range=price, info=info, cake=cake) return JsonResponse({'message' : 'SUCCESS'}, status=status.HTTP_201_CREATED) - + except KeyError: return JsonResponse({'message' : 'KEY_ERROR'}, status=400) @@ -260,7 +260,7 @@ def main(request, page): # 차후 인기 있는 케이크를 보여줄 때 order_by 메소드 이용 # 6개씩 보여주는 로직 # cakes = Cake.objects.all()[:page*6] - store = Store.objects.all()[:page*6] + store = Store.objects.all()[(page-1)*6:page*6] cake = StoreCakeSerializer(store, many=True) return Response(cake.data, status=status.HTTP_201_CREATED) @@ -273,7 +273,6 @@ def main(request, page): def order(request): try: data = json.loads(request.body) - user_email = data['user_email'] store_name = data['store_name'] cake_name = data['cake_name'] @@ -284,15 +283,14 @@ def order(request): return Response(cake.data, status=200) - except KeyError: return JsonResponse({'message' : 'KEY_ERROR'}, status=400) +# 검색기능 @api_view(['GET']) def search(request, page): try: data = json.loads(request.body) - keyword = data['keyword'] stores = {} @@ -313,6 +311,32 @@ def search(request, page): return Response(response_data, status=200) + except KeyError: + return JsonResponse({'message' : 'KEY_ERROR'}, status=400) + +# 필터 검색 기능 +@api_view(['GET']) +def filter(request, page): + try: + data = json.loads(request.body) + + price = data['price'] + locate = data['locate'] + flavor = data['flavor'] + + # related name 때ㅜㄴ에 오류발생하는듯 + + locate_filter = CakeInfo.objects.filter(locate=locate) + price_filter = CakeInfo.objects.filter(price_range=price) + flavor_filter = CakeInfo.objects.filter(flavor=flavor) + + cakes = locate_filter.union(price_filter, all=False) + cakes = cakes.union(flavor_filter, all=False) + + cake = cakes[(page-1)*12:page*12] + serializer = CakeSearchSerializer(cake, many=True) + + return Response(serializer.data) except KeyError: return JsonResponse({'message' : 'KEY_ERROR'}, status=400) \ No newline at end of file diff --git a/Backend/momment/db.sqlite3 b/Backend/momment/db.sqlite3 index 5e7e58fe..d4579349 100644 Binary files a/Backend/momment/db.sqlite3 and b/Backend/momment/db.sqlite3 differ