- Django Rest Framework
Front JS CRUD
[Method : PUT]
serialize에서 받아올 정보를 구현 하고, views.py에서 method를 정의해 준뒤,
프론트에서 어떤 URL에서 어떤 method를 받아와 정보를 줄건지 설정해준다.
여기서 PUT은 serializers.py에서 요구된 모든 정보를 보내주지 않아도 수정이 가능하다.
예를 들어)
class UserChrSerializer(serializers.ModelSerializer):
class Meta:
model = UserChr
fields = ["mbti", "age", "gender"]
read_only_fields = ['user',]
class UserChrChangeView(APIView):
def put(self, request, user_id):
user = get_object_or_404(UserChr, user_id=user_id)
check_serializer = UserChrSerializer(user, data=request.data)
if check_serializer.is_valid():
check_serializer.save()
return Response({"message":"수정완료!"}, status=status.HTTP_200_OK)
serializers.py에서 fields가 3개지만
JS에서
async function userMbtiUpload() {
const change_mbti = document.getElementById("change_mbti").value
alert("MBTI 변경 완료");
const response = await fetch(`${main_url}/users/${userId}/profile/changembti/`, {
headers: {
'Authorization': 'Bearer ' + localStorage.getItem('access'),
'content-type': 'application/json',
},
method: 'PUT',
body: JSON.stringify({
"mbti": change_mbti,
})
})
}
👉 바꿀 MBTI만 수정해줘도 나머지정보인 age, gender는 기존에 저장된 정보 그대로 유지된다.
'woncoding > TIL' 카테고리의 다른 글
| TIL | 12.26.월 [DRF ↔️ JS CRUD] (0) | 2022.12.26 |
|---|---|
| TIL | 12.23.금 [사용자 피드백] (0) | 2022.12.25 |
| TIL | 12.21.수 [DRF ↔️ JS CRUD] (0) | 2022.12.23 |
| TIL | 12.20.화 [DRF ↔️ JS CRUD] (0) | 2022.12.23 |
| TIL | 12.19.월 [Docker | nginx + postgresql + django] (0) | 2022.12.19 |