가상환경 생성 DB(Mysql) 생성 Django 및 mysqlclient install 새 프로젝트 생성 my_settings.py 생성 settings.py 에서 기초 세팅 진행 (주석처리, IP허용, my_settings.py 연동) (SECRET_KEY, DATABASE 는 copy & paste to my_settings.py>이후 default 값 수정) urls.py = [from django.urls import path] 내용 삭제 django-cors-headers 설치 settings.py > INSTALLD_APPS, MIDDLEWARE 및 CORS 추가 서버 시험 실행 ** git & github ** 프로젝트용 repository 생성(SSH Clone Copy) git 초기화, .gitignore 폴더 생성 아래 사이트를 이용하여 필요한 code 복사 .gitignore 파일 생성 후 paste(최하단에 my_settings.py 추가) add > commit -m 추가 Branch 생성 & 이동 프로젝트용 App 생성 후 settings.py에 추가 add > commit -m 재추가 git push origin "브랜치 명" 모델링 -> models.py 공사 -> migration products & migrate 를 거쳐, mysql -u root -p 로 Mysql에 진입한 뒤, DB 확인 zsh도 실행해서 본격 data 입력 진행
-------여기까지가 기본 세팅--------
"post를 이용해서 Owners and Doggies info 입력하기; import json from django.http import JsonResponse from django.views import View from owners.models import Owner, Dog class OwnersView(View): def post(self, request): data = json.loads(request.body) Owner.objects.create( name = data['name'], email = data['email'], age = data['age'] ) return JsonResponse({'MESSAGE':'WELUVDOGGY!'}, status=201) class DogsView(View): def post(self, request): data = json.loads(request.body) Dog.objects.create( owner = Owner.objects.get(name=data['owner']), name = data['name'], age = data['age'] ) return JsonResponse({'MESSAGE':'Mung Mung!'}, status=201)
def get(self, request): owners = Owner.objects.all() results = [] for owner in owners: results.append( { "owner_name" : owner.name, "owner_email" : owner.email, "owner_age" : owner.age } ) return JsonResponse({'results':results}, status=200) ------------------------------------------------------------------------------ "위쪽은 주인의 info만 출력하는 코드" "아래쪽은 주인의 info에 강아지 list 추가(Forign Key)" ------------------------------------------------------------------------------ def get(self, request): owners = Owner.objects.all() results = [] for owner in owners: dogs = [ {"DogName": dog.name} for dog in Dog.objects.filter(owner_id = owner.id) ] results.append( { "owner_name" : owner.name, "owner_age" : owner.age, "dog_list" : dogs } ) return JsonResponse({'results':results}, status=200) ------------------------------------------------------------------------------- "아래쪽은 강아지의 info 만 출력하는 코드" ------------------------------------------------------------------------------- def get(self, request): dogs = Dog.objects.all() results = [] for dog in dogs: results.append( { "owner" : dog.owner.name, "dog_name" : dog.name, "dog_age" : dog.age } ) return JsonResponse({'results':results}, status=200)
-> url.py : Client 가 보낸 요청을 가장 처음 받는 곳
-> manage.py 가 있는 위치의 urls.py가 먼저 요청을 받는다.
-> urlpatterns = [path()] -> 내부 폴더의 urls.py 를 수정하면 shell에서도 똑같이 수정해야 한다.
-> "on_delete=models.CASCADE" -> 무로있는 해당 객체가 삭제되면 같이 삭제되게 하는 코드
*json 결과값은 가끔 순서가 뒤섞여서 출력되기도 한다.
-> post : Create -> body 에 해당하는 내용을 담고 있다.
-> get :
-> 정참조와 역참조 간의 파이썬 코드내용은 다르다