승현님 보충 뷰

박재용·2020년 10월 13일

url 설정 .

http://localhost8000/user 와같이 받을때
프로토콜 // 호스트 // 리소스
리소스 , 엔드포인트 user 을 맵핑하여
루트 - urls 파일에서 include 하여 다른 urls파일로 이동하여 준다 .

from django.urls import path,include

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

user 을 맵핑 해서 user 앱에 urls파일로 이동해서 처리 하라는 의미

user 앱에 urls을 생성후 다음과 같이 붙여넣기 ~

#user.urls
from django.urls path

urlpatterns = [
]

#user.urls 오면

#user.urls
from django.urls path

urlpatterns = [
 path('')
]
#http://localhost8000/user 와같이 user 뒤에 아무것도 없으므로 
#path('')요렇게 빈처리를함 
#path('') 가왔을때  
#프론트의 요청을 View에서 처리하기 위해 . 이때 처리하고싶은 
view를 묶어줘야되요 .  
View.py에있는
클레스를 임폴트를 해야함 . 
그러므로 view를 먼저 기본만 작성할꼐요
#view.py
from django.views import View  #View를 상속받기위해 import

다시 user.url 로돌아오면 .

from .view import SignUpView 를 추가해준다 .
. 는 같은 폴더라는 의미이고 같은폴더의 view 의 SignUpView를 임폴트
가져오겟다는 의미.

from django.urls import path
from .views import SignUpView
urlpatterns = [
   path('',SignUpView.as_view()) 
#''가 들어오면 SignUpView으#로 이동하겠다 .
#여기서 .as_view() 는 Get 일수도있구 Post 일수도있
#는데 이것을 알아듣고 처리할수있는 메소드 . 
]
from django.views import View 

 #SignUpView 를 받으면 헬로를 출력 
class SignUpView(View):
    def post(self , request): #request 프론트론 응답 , #Self? #post , #get ??
        print ("Hello")
http POST localhost:8000/user name="웅이" address="테헤란로"  phone_number="010-1234-1234"

요렇게 데이터를 보내면 json body 가 들어옴 . 
Get 은 json head ??? 
json으로 들어오는걸 파이썬화 시켜야하니 . 다음과같이 import해준다 .

#views.py
import json
from django.views import View

class SignUpView(View):
def post(self , request):
data =json.loads(request.body) #request.body가 jason이니까 요걸 파이썬 딕셔너리로 바꾸어 주고 싶어서 . json.loads라는 함수를 불러요 .
그다음
다시 http POST localhost:8000/user name="웅이" 호출해보세요
아래와 같이 딕셔너리로 출력됩니다 .
우리는 프론트엔드에 알기쉽게 전달하기위해 .
딕셔너리로 해준거 .

최종목표로는 jsonresponse 하여 프론트엔드에게 response를 주는것이다 . 그러므로 다음과 같이 한다 .

 #views.py
import json
from django.views import View 
from django.http import JsonResponse 

 
class SignUpView(View):
    
    def post(self , request):
        data =json.loads(request.body)
        
        return JsonResponse({"name":data["name"]} , status=200) 
#프론트엔드에서 편하게 보기위해 딕셔너리로 
profile
박재용이란 사람이 복습을 하기위해 만든 벨로그 입니다 . 잘부탁드려요

0개의 댓글