[C.R.U.D.] Django Post, Get
Django setting brief Summary
가상환경 생성
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 입력 진행
가상환경 생성
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 입력 진행
-------여기까지가 기본 세팅--------
객체 관계성 매핑(ORM)?
- Object Relational Mapping(ORM): Object(객체)는 OOP에서 사용되는 객체 그 자체를 의미하고,
Relational(관계)는 흔히 사용하는 관계형 DB를 의미함 - 즉, 객체와 관계형DB를 매핑해주는 개념
- 예를 들어, Django(Python)에서 작성한 코드를 관계형 DB의 SQL 쿼리로 자동 변환 시켜서
개발자가 따로 SQL쿼리를 작성할 필요 없이 파이썬 코드 작성만으로 DB를 조작할 수 있게 해 주는 것
HTTP(Post 와 Get)
POST
"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)
GET
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)
별첨 : Django 속 여러가지 요소(혹은 단어)들의 역할(의미) 모음
"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 :
-> 정참조와 역참조 간의 파이썬 코드내용은 다르다
Author And Source
이 문제에 관하여([C.R.U.D.] Django Post, Get), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@_ted_0527_/C.R.U.D.-Django-Post-Get저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)