Django 엔드포인트 작성, Json 응답하기

김병욱·2020년 4월 28일
0

Django

목록 보기
7/15

장고 프로젝트를 아무거나 만들고 , 아무 앱이나 추가하자.

models.py

from django.db import models


class Users(models.Model):
    name       = models.CharField(max_length = 50)
    email      = models.CharField(max_length = 50)
    password   = models.CharField(max_length = 300)
    created_at = models.DateTimeField(auto_now_add = True)
    updated_at = models.DateTimeField(auto_now = True)

urls.py

from django.urls import path
from .views  import MainView

urlpatterns = [
    path('', MainView.as_view())
]

# as_view() 메소드는 현재 주소인 나를 호출하면 그 호출을 한 http 메소드가 GET인지 POST인지 DELETE인지 UPDATE인지 등을 판별해서 그에 맞는 함수를 실행시켜준다.

views.py

import json
from django.views import View
from django.http  import JsonResponse
from .models      import Users


class MainView(View):
    def post(self, request):
        data = json.loads(request.body)
		# post메소드는 request의 body에 내용이 담겨오므로 json.loads 해주자
        Users(
              name     = data['name'],
              email    = data['email'],
			  password = data['password']
        ).save()
        
        return JsonResponse({'message':'SUCCESS'}, status=200)

	# JsonResponse는 Json형식으로 응답한다. status=200은 http응답코드 200을 주어 원활하게 통신했다는 코드를 준다.

   def get(self, request):
        user_data = Users.objects.values()
		    return JsonResponse({'users':list(user_data)}, status=200)
            
    # get 메소드로 들어오면 Users.objects.values()를 통해 Users db안의 모든 필드명:값을 사전형으로 가져온다.

Httpie 사용하기

  • mac os terminal

    http -v 엔드포인트주소 필드명=값 (POST방식으로간다)
    http -v 엔드포인트주소 (GET방식으로간다)

profile
개발스터디

0개의 댓글