C.R.U.D2 과제 코드 리뷰(OwnerView)

6557 단어 djangopythondjango
class OwnerView(View):  #주인 정보를 등록하고 가져오는 클래스 생성
    def post(self, request)  #프론트에서 요청하는 데이터가 request 인자에 담김
        data = json.loads(request.body)  #프론트에서 넘어오는 데이터는 json형태로 넘어오기 때문에 파이썬으로 가공한 후 받아야 하는데, 그 역할을 loads함수가 해줌. 
        Owner.objects.create(  #create함수를 통해 프론트에서 요청한 데이터를 생성
            name  = data['name'],  #파이썬으로 가공한 데이터가 담긴 data변수를 
            email = data['email'], #통해 데이터베이스에 데이터 입력
            age   = data['age']
        )
        return JsonResponse({"Message": "Success"}, status=200)  #마지막으로 응답을 리턴해줌 
    def get(self, request): #프론트에게 정보를 넘겨주어야 하는 get메소드
        result = []  #파이썬에서 json형태로 변환하여 데이터를 넘겨주어야 하기 때문에 변환이 가능한 형태인 리스트에 데이터를 담아야함
        owners = Owner.objects.all()  #주인의 모든 데이터를 쿼리셋 형태로 변수에 저장
        for owner in owners:  #주인 데이터를 for문을 통해 한개씩 꺼냄
            dogs = owner.dog_set.all()  #각 주인에 대해 역참조 되어있는 강아지의 데이터를 _set함수를 통해 가져옴
            dog_list = []  
            for dog in dogs:  #for문을 통해 강아지의 정보를 딕셔너리에 추가함
                dog_information = {
                    'name': dog.name,
                    'age' : dog.age
                }
                dog_list.append(dog_information)  
            owner_information = {      #주인의 정보도 딕셔너리에 추가함
                'name ': owner.name,
                'email': owner.email,
                'age'  : owner.age,
                'dogs' : dog_list
            }
            result.append(owner_information)
        return JsonResponse({'result': result},   status=200)   #JsonResponse를 통해 리스트에 담아놓은 result값을 리턴해줌.

좋은 웹페이지 즐겨찾기