account app in views.py
import json
from django.views import View
from django.http import HttpResponse,JsonResponse
from .models import Account
# import 순서도 컨벤션의 규칙에 맞게한다.
class AccountView(View):
def post(self,request):
data = json.loads(request.body)
try:
Account.objects.create(
name = data['name'],
phone = data['phone'],
email = data['email'],
password = data['password']
)
return JsonResponse({'message':'SUCCESS'}, status = 200)
except KeyError:
return JsonResponse({'message':'INVALIDE_KEY', status= 400}
def get(self,request):
# key(data)와 values(account_data가 여러개니까 리스트화) 를 던진>다
account_data = Account.objects.values()
return JsonResponse({'data':list(account_data)}, status = 200)
# 다른방법 (httpie로 보면 key값은 넘겨주지 않고 그냥 리스트+사전>형으로 던진다
account_data = list(Account.objects.values())
return JsonResponse(account_data, safe=false, status=200)
data.get('name',None) 은 name필드의 값이 들어오지않으면 default값으로 None을 넣는다
필드에 default 값이나 null=True 옵션이 들어가 있지 않았는데 data.get('name',None)을 쓰면 defulat값으로 None이 들어가기 때문에 에러가 난다.ㅑ
에러 코드를 발생시킬때는 왠만하면 메세지를 주고 대문자로 프론트엔드가 잘
알아 볼 수 있게 준다.
json.dumps 는 json형식을 딕셔너리로 변환함
def get(self,request):
----HTTP 통신----
request response
statline statusline
headers headers
body body
body엔 json데이터가 담긴다
statusline엔 status응답코드가 담긴다