[210806 Django] 오늘의 에러

Choi Rim·2021년 8월 6일
1

Error

목록 보기
1/4
post-thumbnail
Traceback (most recent call last):
  File "/home/hyerim/miniconda3/envs/Seocaso/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner
    response = get_response(request)
  File "/home/hyerim/miniconda3/envs/Seocaso/lib/python3.8/site-packages/django/core/handlers/base.py", line 181, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/hyerim/miniconda3/envs/Seocaso/lib/python3.8/site-packages/django/views/generic/base.py", line 70, in view
    return self.dispatch(request, *args, **kwargs)
  File "/home/hyerim/miniconda3/envs/Seocaso/lib/python3.8/site-packages/django/views/generic/base.py", line 98, in dispatch
    return handler(request, *args, **kwargs)
  File "/home/hyerim/oioi/utils.py", line 19, in wrapper
    return func(self, request, *args, **kwargs)
  File "/home/hyerim/oioi/cafes/views.py", line 138, in get
    return JsonResponse({'result':results}, status=200)
  File "/home/hyerim/miniconda3/envs/Seocaso/lib/python3.8/site-packages/django/http/response.py", line 603, in __init__
    data = json.dumps(data, cls=encoder, **json_dumps_params)
  File "/home/hyerim/miniconda3/envs/Seocaso/lib/python3.8/json/__init__.py", line 234, in dumps
    return cls(
  File "/home/hyerim/miniconda3/envs/Seocaso/lib/python3.8/json/encoder.py", line 199, in encode
    chunks = self.iterencode(o, _one_shot=True)
  File "/home/hyerim/miniconda3/envs/Seocaso/lib/python3.8/json/encoder.py", line 257, in iterencode
    return _iterencode(o, 0)
  File "/home/hyerim/miniconda3/envs/Seocaso/lib/python3.8/site-packages/django/core/serializers/json.py", line 105, in default
    return super().default(o)
  File "/home/hyerim/miniconda3/envs/Seocaso/lib/python3.8/json/encoder.py", line 179, in default
    raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type method is not JSON serializable

TypeError: Object of type method is not JSON serializable
이게 머선 129...

 File "/home/hyerim/oioi/utils.py", line 19, in wrapper
    return func(self, request, *args, **kwargs)
  File "/home/hyerim/oioi/cafes/views.py", line 138, in get
    return JsonResponse({'result':results}, status=200)

에러 내용을 잘 보니 decorator가 있는 utils파일과 cafe의 view 파일에서 Type 에러가 일어났다고 한다.


return JsonResponse({'result':results}, status=200)

아마 JsonResponse로 반환했던 배열 results에 문제가 있는 것 같다. 🤔

[{'menus': [{'id': 1, 'url': 'https://i.imgur.com/ehdfhcb.jpg', 'menu_name': '카페라떼', 'price': Decimal('4500.00')}, {'id': 2, 'url': 'https://i.imgur.com/lTe8HBB.jpg', 'menu_name': '카푸치노', 'price': Decimal('4500.00')}, {'id': 3, 'url': 'https://i.imgur.com/ZbyIWBD.jpg', 'menu_name': '에스프레소', 'price': Decimal('4000.00')}, {'id': 4, 'url': 'https://i.imgur.com/N3I2h2D.jpg', 'menu_name': '녹차라떼', 'price': Decimal('4500.00')}], 'reviews': [{'nickname': '최혜림', 'profile_image': 'sdfsdfadsf', 'star_rating': Decimal('4.0'), 'content': '분위기 짱', 'review_like': <bound method QuerySet.count of <QuerySet []>>, 'comment_on_review': 0}], 'informations': [{'id': 1, 'name': '모리츠 플라츠', 'business_hour': '매일 12:00 ~ 23:00 연중무휴', 'address': '서울 마포구 와우산로 174', 'phone_number': '010-7546-7122', 'description': '홍대에 위치한 카페&숍 입니다.', 'review_ranking': 0, 'star_rating_ranking': 4, 'likes': 0, 'cafe_image_url': 'https://i.imgur.com/pzMvbm8.jpg', 'background_image_url': ['https://i.imgur.com/IB7XZxC.jpg', 'https://i.imgur.com/PkrGVsX.jpg', 'https://i.imgur.com/DQOGc0U.jpg', 'https://i.imgur.com/pEjMJKS.jpg', 'https://i.imgur.com/LuGwdD0.jpg', 'https://i.imgur.com/ycEL26q.jpg', 'https://i.imgur.com/pzMvbm8.jpg'], 'evaluation_graphs': [{'0.5': 0.0, '1.0': 0.0, '1.5': 0.0, '2.0': 0.6666666666666666, '2.5': 0.0, '3.0': 0.0, '3.5': 0.3333333333333333, '4.0': 0.3333333333333333, '4.5': 0.3333333333333333, '5.0': 0.3333333333333333}]}]}]

print된 results 결과를 보다 스파이를 발견했다!

'review_like': <bound method QuerySet.count of <QuerySet []>>

아마 결과로 반환한 results 배열안에 QuerySet method가 포함되어 있어서 오류가 생긴 듯하다.

'review_like'      : ReviewLike.objects.filter(review_id=review.id).count

count를

'review_like'      : ReviewLike.objects.filter(review_id=review.id).count()

count()로 바꿔주니 문제가 해결되었다.

"review_like": 0

편-안 😌

profile
https://rimi0108.github.io/

0개의 댓글