TIL78. django 주인과 강아지

Jaeyeon·2021년 4월 4일
0
post-thumbnail

주인과 강아지

POST

1. 신규 주인 등록

class OwnerView(View):
    def post(self,request):
        owners = json.loads(request.body)
        name = data['name']
        email = data['email']
        age = data['age']
        Owner.objects.create(name=name, email=email, age=age)
        return JsonResponse({'message': 'SUCCESS'}, status = 201)

2. 강아지 등록 (주인정보 필요)

class DogView(View):
    def post(self,request):
        dogs = json.loads(request.body)
        name = dogs['name']
        age = dogs['age']
        owner = Owner.objects.get(name = dogs['owner'])     # 프론트에서 준 데이터에서 오너의 이름을 가져오고 그거를 owner라는 변수에 대입 /  Objects 출력
        Dog.objects.create(name = name, age = age, owner = owner)    
        return JsonResponse({'message' : 'SUCCESS'}, status = 201)

GET

1. 강아지 리스트
- 이름, 나이, 주인 이름 포함

class DogView(View):
    def get(self,request):
        dogs = Dog.objects.all()
        arr = []
        for puppy in dogs:
            my_dict = {
                'owner' : puppy.owner.name,
                'name' : puppy.name,
                'age' : puppy.age
            }
            arr.append(my_dict)
        return JsonResponse({'result' : arr}, status = 200)

2. 주인 리스트
- 이름, 나이 포함, 키우는 강아지 리스트 (이름, 나이 포함)

class OwnerView(View):
    def get(self,request):
        owners = Owner.objects.all()
        arr = []
        
        for owner in owners:
            dog_list=[]
            dogs = owner.dog_set.all()
            for dog in dogs:
                dog_information = {
                    'dog_name' : dog.name,
                    'dog_age' : dog.age
                }
                dog_list.append(dog_information)
            my_dict = {
                'name' : owner.name,
                'email' : owner.email,
                'age' : owner.age,          
                'dog list' : dog_list
                }
            arr.append(my_dict)
        return JsonResponse({'result' : arr}, status = 200)

전체 코드


import json

from django.views import View
from django.http import JsonResponse

from .models import Owner,Dog

class OwnerView(View):
   def get(self,request):
       owners = Owner.objects.all()
       arr = []
       
       for owner in owners:
           dog_list=[]
           dogs = owner.dog_set.all()
           for dog in dogs:
               dog_information = {
                   'dog_name' : dog.name,
                   'dog_age' : dog.age
               }
               dog_list.append(dog_information)
           my_dict = {
               'name' : owner.name,
               'email' : owner.email,
               'age' : owner.age,          
               'dog list' : dog_list
               }
           arr.append(my_dict)
       return JsonResponse({'result' : arr}, status = 200)
       
   def post(self,request):
       owners = json.loads(request.body)
       name = data['name']
       email = data['email']
       age = data['age']
       Owner.objects.create(name=name, email=email, age=age)
       return JsonResponse({'message': 'SUCCESS'}, status = 201)


class DogView(View):
   def get(self,request):
       dogs = Dog.objects.all()
       arr = []
       for puppy in dogs:
           my_dict = {
               'owner' : puppy.owner.name,
               'name' : puppy.name,
               'age' : puppy.age
           }
           arr.append(my_dict)
       return JsonResponse({'result' : arr}, status = 200)

   def post(self,request):
       dogs = json.loads(request.body)
       name = dogs['name']
       age = dogs['age']
       owner = Owner.objects.get(name = dogs['owner'])     # 프론트에서 준 데이터에서 오너의 이름을 가져오고 그거를 owner라는 변수에 대입 /  Objects 출력
       Dog.objects.create(name = name, age = age, owner = owner)   # 
       return JsonResponse({'message' : 'SUCCESS'}, status = 201)
profile
생각하는 개발자 되기

0개의 댓글