Http 통신

김병욱·2020년 5월 5일
0

Django

목록 보기
13/15
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응답코드가 담긴다
profile
개발스터디

0개의 댓글