[Django] C.R.U.D (2)

2021. 8. 21. 17:14코딩일지/Django

1.  View 작성하기

※ newproject/views.py 작성

  • Step 1. Create
  • 자원(resource)을 생성할 때, Http Method 중에 Post Method를 사용합니다. 또한 로그인 회원가입 등 중요한 정보도 POST method로 데이터를 request의 body에 담아서 client에서 server로 요청합니다.
import json

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

from newproject.models import Owner, Cat

class OwnersView(View):

    def post(self, request):
        data  = json.loads(request.body)
        owner = Owner.objects.create(
            name    = data["name"],
            email   = data["email"],
            age     = data["age"],
        )
        return JsonResponse({'MESSAGE':'CREATED'}, status=201)

class CatsView(View):
    
    def post(self, request):
        data = json.loads(request.body)
        cat  = Cat.objects.create(
            name        = data["name"],
            cat_age     = data["cat_age"],
            owner_id    = data["owner_id"]
        )
        return JsonResponse({'MESSAGE':'CREATED'}, status=201)

 

※ View를 작성한 후에는, 클라이언트의 요청을 받아 적절한 view를 맵핑해주는 urls.py 작성해준다.

  • ★ : urls.py 작성위치 
├── manage.py
├── products
│   ├── models.py
│   ├── ★urls.py
│   └── views.py
└── westarbucks
    └── urls.py : main urls.py (요청 url 분석을 가장 먼저 하는 위치)
  • urls.py 생성
touch urls.py
vi urls.py

 

※ products/urls.py 작성

from django.urls import path

from newproject.views import OwnersView, CatsView

urlpatterns = [
        path('owners', OwnersView.as_view()),
        path('cats', CatsView.as_view()),
]

 

  • 처음 클라이언트로 부터 요청을 받기 위한 main urls.py(newproject/urls.py)와 연결해주어야 합니다.
from django.urls import path, include

urlpatterns = [
	path('newproject', include('newproject.urls')),
]

 

2. httpie(client)로 django server에 요청 보내기 또는 python shell로 내용 기입하기

  # httpie로 데이터 입력을 요청하려면 서버가 가동되고 있어야 합니다.

  • django 서버 가동
# 가상환경을 키고 manage.py가 있는 디렉토리로 이동해야합니다.

python manage.py runserver

 

  • httpie(client)로 POST를 써서 django server 요청 (owners)
http -v POST 127.0.0.1:8000/newproject/owners name='신우주' email='zkzkxls@Naver.com' age=28

 

  • python shell로 Owner class에 Data 기입
python manage.py shell

from newproject.models import Owner, Cat 

Owner.objects.create(name='아무개', email='amg@gmail.com', age=20)

# 쿼리 셋으로 나오지 않고 이름으로 나오는 것은 models.py에 __str__을 지정했기 때문에 저렇게 나옵니다.

#newproject.models.py

def __str__(self):
   return self.name + self.email

 

  • data값이 table에 정확히 들어갔는지 확인합니다.

  • 정확히 들어갔으니 나머지 고양이의 데이터도 채워주겠습니다.

 

 httpie와 python shell을 이용하여 데이터를 넣어주는 것은 비슷하지만 httpie로 프런트엔드 역할을 대신해서 기입해주는 방법 python shell로 데이터베이스에 바로 기입해주는 방법에서 차이가 있다고 볼 수 있습니다.

 백엔드가 서버를 가동해주면 프런트엔드가 서버 아이피와 포트 등을 받아와서 데이터를 기입하고 전송하면서 데이터 베이스에 저장되는 것을 보면서 C.R.U.D의 이론에 대해서 이해하는 배움의 시간을 얻어서 좋았습니다.

 

C.R.U.D(3)에서 GET Method와 httpie를 사용해 READ 하는 방법으로 마무리하겠습니다. 

 

감사합니다.

 

'코딩일지 > Django' 카테고리의 다른 글

[Django] ManytoManyField  (0) 2021.08.26
[Django]C.R.U.D (3)  (0) 2021.08.26
[Django] C.R.U.D (1)  (0) 2021.08.19
[Django] Project Setting  (0) 2021.08.18
[Django] Tutorials  (0) 2021.08.14