์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- ์ ๋ณด์ฒ๋ฆฌ๊ธฐ์ฌ
- d
- ์ฌ๋ผ์ด์ค
- SD
- ๋ฆฌ์คํธ์ปดํ๋ฆฌํธ์ #๋ฌธ์์ด#๋ฆฌ์คํธ#๋์ ์ด๋ฆฌ
- ๋ฌธ์์ด#ํ ๋ฆฐ๋๋กฌ
- Today
- Total
JustDoEat
serializer๋ฅผ ๋ค๋ฃจ๋ฉด์ ์ค์ํ ์ ๋ค with Json format ๋ณธ๋ฌธ
serializer๋ฅผ ๋ค๋ฃจ๋ฉด์ ์ค์ํ ์ ๋ค with Json format
kingmusung 2024. 1. 8. 16:15๐ฃ serializer formating error
์๋ฆฌ์ผ ๋ผ์ด์ ์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ๊ณ์ ํต๊ณผํ์ง ๋ชปํ๋ ์ํฉ์ด ๋ฐ์ํจ.
{'non_field_errors': [ErrorDetail(string='Invalid data. Expected a dictionary, but got str.', code='invalid')]}
๋ผ๋ ์ค๋ฅ๊ฐ ์ง์์ ์ผ๋ก ๋ ์, ์ฒ์์๋ ์๋ฆฌ์ผ๋ผ์ด์ ์ fields๊ฐ์ ๋ฌธ์ ๊ฐ ์๋ ์ค ์์์ผ๋, ๋ฐ์ดํฐ ํ์์ ์ค๋ฅ ๋ง ๊ทธ๋๋ก ๋์ ์ด๋ฆฌ ํํ๋ก ์๋ฃ์ด์ ๋ฐ์ํ ๋ฌธ์ ์ด๋ค.
@staticmethod
def post(request):
calendar_id = request.data.get('calendar_id')
member_id = request.data.get('member_id')
# ๋ ์ง์์ ์ฐ์๋ง ์ถ์ถ
year_month_day = request.data.get('diary_date')
# ์บ๋ฆฐ๋๊ฐ ์์๋
print(calendar_id,member_id,year_month_day)
if calendar_id is None:
member_instance = get_object_or_404(Member, member_id=member_id) # ๋ฉค๋ฒ ์ธ์คํด์ค ๋ฐ์์ค๊ธฐ
calendar_serializer = HarucalendarCreateSerializer(data= year_month_day) #๋ค์ด์ด๋ฆฌ ์์ฑ.
if calendar_serializer.is_valid():
calendar_serializer.save(member_id=member_instance)
return Response(status=status.HTTP_201_CREATED)
else:
print(calendar_serializer.errors)
return Response(status=status.HTTP_200_OK)
else:
return Response(status=status.HTTP_200_OK)
๐งฉ ํด ๊ฒฐ
@staticmethod
def post(request):
calendar_id = request.data.get('calendar_id')
member_id = request.data.get('member_id')
# ๋ ์ง์์ ์ฐ์๋ง ์ถ์ถ
year_month_day = request.data.get('diary_date')
# ์บ๋ฆฐ๋๊ฐ ์์๋
print(calendar_id,member_id,year_month_day)
if calendar_id is None:
member_instance = get_object_or_404(Member, member_id=member_id) # ๋ฉค๋ฒ ์ธ์คํด์ค ๋ฐ์์ค๊ธฐ
calendar_serializer = HarucalendarCreateSerializer(data={'year_month_day':year_month_day}) #๋ค์ด์ด๋ฆฌ ์์ฑ.
if calendar_serializer.is_valid():
calendar_serializer.save(member_id=member_instance)
return Response(status=status.HTTP_201_CREATED)
else:
print(calendar_serializer.errors)
return Response(status=status.HTTP_200_OK)
else:
return Response(status=status.HTTP_200_OK)
์์ ์
calendar_serializer = HarucalendarCreateSerializer(data= year_month_day)
์์ ํ
calendar_serializer = HarucalendarCreateSerializer(data={'year_month_day':year_month_day})
์์ ์ ๊ณผ ์์ ํ์ ์ฐจ์ด์ ์ด ๋ณด์ด๋๊ฐ, ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ก ์ฝ์ ํ๊ฒ๊ณผ, ๋์ ์ด๋ฆฌ ์์ ๋ฃ์ด์ ์ฝ์ ์ ํ๋๊ฐ ์ฐจ์ด๋ค.
ํด๊ฒฐ๋ฒ์ผ๋ก๋ data={} ๋์ ์ด๋ฆฌ ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด์ฃผ๋ฉด ํด๊ฒฐ์ด ๋๋ ๋ฌธ์ ์๋ค.
์๊ฐํด๋ณด๋๊น ๋น์ฐํ๋ค serializer๋ ๋ชจ๋ธ์ ์๋ ๋ฐ์ดํฐ๋ฅผ jsonํ์์ผ๋ก ์ง๋ ฌํ ํน์ ์ญ์ง๋ ฌํ๋ฅผ ํด์ฃผ๋๊ฑด๋ฐ ์์ง ๊ฐ๋ ์ด ์ ๋ฐํ์ง ์์์๋ค.
serializer.py
class HarucalendarCreateSerializer(serializers.ModelSerializer):
class Meta:
model = Harucalendar
fields = ['year_month_day']
def create(self, validated_data):
return Harucalendar.objects.create(**validated_data)
๐ฃ Json ํ์์ ๋ํ ์ดํด๋ถ์กฑ์ผ๋ก ์ธํ ์๋ฌ
ํด๋ผ์ด์ธํธ๊ฐ 2๊ฐ ์ด์์ ์คํฐ์ปค๋ฅผ ๋ถํ๊ณ ์ ์ฅ์ ๋๋ ์๋, ์ฆ 2๊ฐ ์ด์์ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ jsonํ์์ผ๋ก ๋ฐ์์์๋ ์๊ธฐ๋ ์ค๋ฅ
class HarucalendarstickerView(APIView):
@staticmethod
def post(request):
try:
calendar_id = request.data.get('calendar_id')
calendar_sticker_id = request.data.get('calendar_sticker_id')
exist_or_not = get_object_or_404(Harucalendar, calendar_id=calendar_id)
except ObjectDoesNotExist:
return Response({'error': '์ผ๋ฆฐ๋๊ฐ ์์ต๋๋ค.'}) # ์บ๋ฆฐ๋ ์์ฑ ๋ก์ง ์ถ๊ฐ.
# ํ๋ก ํธ์์ ์ด์ฌํ ๋ถํ ์คํฐ์ปค DB ์ ์ฅ
sticker_data = request.data.get('stickers', []) # ์คํ ์์
print(sticker_data)
for sticker_data_ in sticker_data:
if 'st_image_url' not in sticker_data_: ---------->๋ฌธ์ ์ ์์
return Response({'error': '์คํฐ์ปค url์ด ์์ต๋๋ค !'})
serializer = HarucalendarstickerAllSerializer(data=sticker_data_)
if serializer.is_valid():
serializer.save(calendar_id=calendar_id, calendar_sticker_id=calendar_sticker_id)
else:
return Response({'error': serializer.errors}, status=400)
return Response({'code': 'c002', 'status': '200', 'message': '์คํฐ์ปค ์ถ๊ฐ ์ฑ๊ณต'}, status=200)
๋๊ฐ ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์์๋ for๋ฌธ์์ ๋งํ๋ํ์,
sticker_data = request.data.get('stickers', []) # ์คํ ์์
print(sticker_data)
for sticker_data_ in sticker_data:
if 'st_image_url' not in sticker_data_: ---------->๋ฌธ์ ์ ์์
์๋๋ api๋ฅผ ์์ฒญํ๋ JSONํ์์ด๋ค. ์ค๊ดํธ ์์ ๋ฐ์ดํฐ๋ค์ด ์๋๋ฐ ์ฌ๊ธฐ์ ๋ฐ๋ก ์ค๊ดํธ์์ ๊ฐ์ ๋ฐ๋ก ๋นผ๋ ค๊ณ ํ๋๊น ์ค๋ฅ๊ฐ ์๊ฒผ๋ ๊ฒ ์ด๋ค.
"stickers": [
{
"sticker_id": 0,
"sticker_image_url": "string",
"top": 0,
"left": 0,
"height": 0,
"width": 0,
"rotate": 0
},
{
"sticker_id": 0,
"sticker_image_url": "string",
"top": 0,
"left": 0,
"height": 0,
"width": 0,
"rotate": 0
}
]
๐งฉ ํด๊ฒฐ
class HarucalendarstickerView(APIView):
@staticmethod
def post(request):
try:
stickers_data = request.data.get('stickers', [])
for sticker_data in stickers_data:
calendar_id = sticker_data.get('calendar_id')
sticker_url= sticker_data.get('sticker_image_url')
if calendar_id is None:
return Response({'error': 'stickers ๋ด๋ถ์ calendar_id๊ฐ ์ ๊ณต๋์ง ์์์ต๋๋ค.'},
status=status.HTTP_400_BAD_REQUEST)
''' ์๋ต'''
โ๏ธ ๋๋์ ๋ฐ ๋ฐฐ์ด์ .
{
"stickers": [
{
"calendar_id": 1,
"sticker_image_url": "s65222465464ddd",
"xcoor": 50,
"ycoor": 100,
"height": 60,
"rolate": 80,
"width": 50
},
"calendar_id": 1,
"sticker_image_url": "s22d2wsddaadd",
"xcoor": 5022,
"ycoor": 10022,
"height": 6022,
"rolate": 8022,
"width": 5022
}
]
}
๐ฅ 2๊ฐ ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ผ์์๋ ์ด๋ฐ ํ์์ผ๋ก ์์ฑ์ ํด์ผํ๋ค.
๐ฅ ์ด์ํ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ ์์๋ค..
2๊ฐ ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ ํฌ๋ฌธ ์์์ ํ๋์ฉ ๋ฐ์์ ๋ก์ง์ ์ง์ผํ๋ค.
-> ๋น์ฐํ ๋ง์ธ๋ฐ jsonํํ๊ฐ ์์ํด์ ์ค์๋ฅผ ํ๊ฑฐ ๊ฐ๋ค.
+์๋ฆฌ์ผ๋ผ์ด์ ๋ ๋ฐ์ดํฐ๋ฅผ ์ง๋ ฌํ, ์ฆ ์๋ฆฌ์ผ๋ผ์ด์ ์ ๋ด๊ฐ ์ง์ ํ fields=['','','',''] ์์ ์๋ ๋ฐ์ดํฐ์ ํ์๊ณผ ์ ๋ ฅ์ผ๋ก ๋ณด๋ธ๊ฐ๊ณผ ํ์์ด ์ผ์นํด์ผ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ํต๊ณผํ ์ ์๋ค.
+serializer.save(์ธ๋ํค๊ด๊ณ= ์ธ์คํด์ค), ์ ์ฅ ํ๋ ค๋ model์ ์ธ๋ํค ๊ด๊ณ์ ์๋ model์ ๋ํด ์ธ๋กํค๋ฅผ ์ ๋ฌํ๋๊ฒ ์๋๋ผ ์ธ์คํด์ค๋ฅผ ์ ๋ฌํ๋๊ฒ์ด๋ค.
member_instance=get_object_or_404(pk=member_id)
diary_serializer(data=data) -> diary_serializer.is_valid() ----์ฐธ----> diary_serializer.save(fk=member_instance)