DRF 설치하고 POST MAN으로 JsonResponse 받기

김지용·2022년 6월 7일
0

사용 에디터 : VSCode

가상환경 만드는 명령어(만약 이게 안 먹는다면 python path 설정이 제대로 안 된거다)

python -m venv venv

가상환경 진입

F1 또는 Ctrl+Shift+P를 누르면 화면 상단에 창이 하나 생기는 데, 거기에 Python Select Interpreter를 입력

venv 진입해서

pip install django #장고 설치
pip install djangorestframework #DRF 설치

python 3.6부터 문자열 포매팅을 편하게 해주는 f스트링 지원

(호환성 등의 문제로 조금 더 위의 버전을 선호하는 편이다.
실제로 python 3.8에서는 f-string을 좀 더 사용하기 편하도록 문법이 개선이 되었다.
기존에는 변수명과 변수값을 콘솔에 출력해볼 때, f-string 안 에 변수를 2번 사용 / 지금은 1번 사용)

터미널에서 명령어 추가 입력(가상환경 진입 상태에서 할 것!)

pip freeze > requirements.txt
pip install -r requirements.txt

django-admin startproject 프로젝트이름 .

INSTALLED_APPS 에 장고 레스트프레임워크 추가

  • INSTALLED_APPS에 ‘rest_framework’ 추가

REST_FRAMEWORK 추가하기

REST_FRAMEWORK = {
    'DEFAULT_PERMISSION_CLASSES': [ # 기본적인 view 접근 권한 지정
        'rest_framework.permissions.AllowAny'
    ],
    'DEFAULT_AUTHENTICATION_CLASSES': [ # session 혹은 token을 인증 할 클래스 설정
        'rest_framework.authentication.TokenAuthentication',
        'rest_framework.authentication.SessionAuthentication'
    ],
    'DEFAULT_PARSER_CLASSES': [ # request.data 속성에 액세스 할 때 사용되는 파서 지정
        'rest_framework.parsers.JSONParser',
        'rest_framework.parsers.FormParser',
        'rest_framework.parsers.MultiPartParser'
    ]
}

이러면 레스트프레임워크 사용준비는 끝 , 가져다가 쓰면 됨.

추가적으로 들이면 좋은 습관!

파스칼,카멜,스네이크 등의 표기법이 있는데

python 에서 카멜은 안 쓴다고 한다. 파스칼이랑 스네이크만 쓴다고 한다

  • class는 파스칼 == CBV(Class Base View)
  • def 는 스네이크 == FBV(function_base_view)

파이썬의 국룰이라고 한다.

카멜 케이스

int mathScore;

public void getMathScore(int mathScore) {
	return mathScore;
}

처음에는 소문자로 시작하며 2번째 단어부터는 첫글자가 대문자로 시작한다.
참고로 조합하는 단어는 보통 명사를 사용해야 하나, 메소드에서 첫번째 시작하는 단어는 동사로 시작하는 것을 권장한다고 한다. (select, get, put, search 등)

케밥 표기법 (Kebab case)이란 것도 있는데
'_'(언더바) 대신 '-'(하이폰) 을 쓰는 것이 특징이다.
많은 언어가 하이픈을 지원하지 않기 때문에 사용하는 예는 상당히 제한되어 주로 프로퍼티(properties)에 값을 설정한다던지, CSS에서 쓴다던지 혹은 HTML에서 일부 사용한다고 한다.

참고로 '-'(하이폰)을 쓰면 더블클릭시 하이폰 기준으로 나눠져서 전체 단어가 선택이 안 된다.
하지만 '_'(언더바)를 쓰면 더블클릭시 단어가 다 선택되서 나는 언더바를 선호하는 편이다.


PostMan으로 요청받아서 띄우기!

간단하다. 장고에서 경로 설정하고 포스트맨에서 그 경로 url을 입력하면 뜰거다.

그런데!!! 입력을 했더니

postman loud Agent Error: Can not send requests to localhost. Select a different agent.

이런 에러가 뜨면서 포스트맨에서 어떤 응답도 못 받아오는 것이었다.

python manage.py runserver 8001로 하면서 다른 포트번호로 열고 접속해봐도 안 되는 것이었다. 내 브라우저에서는 실행되는데 포스트맨에서는 안 된다는 건 포스트맨에 리퀘스트를 못 받아오는 상황이라는 것!

그래서 검색해보니 포스트맨은 내 로컬 환경과 바로 연결이 안 되기때문에 포스트맨데스크탑?? 을 다운 받아야 한다는 것이었다. 그래서 다운 받으니 무사히 해결 완료!

연결할 수 있게 포스트맨 다운받는 경로는

https://www.postman.com/downloads/ 이다.

AI > urls.py

"""AI URL Configuration

The `urlpatterns` list routes URLs to views. For more information please see:
    https://docs.djangoproject.com/en/4.0/topics/http/urls/
Examples:
Function views
    1. Add an import:  from my_app import views
    2. Add a URL to urlpatterns:  path('', views.home, name='home')
Class-based views
    1. Add an import:  from other_app.views import Home
    2. Add a URL to urlpatterns:  path('', Home.as_view(), name='home')
Including another URLconf
    1. Import the include() function: from django.urls import include, path
    2. Add a URL to urlpatterns:  path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path

from AI import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.show_message_success),
]

AI > views.py

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


# Function based view
def show_message_success(request):
    data = {
        "message": "successs!!!!!",
        # "age": 20,
        # "hobbies": ["Coding", "Art", "Gaming", "Cricket", "Piano"]
    }
    if request.method == 'GET':
        return JsonResponse(data, status=200)
    else:
        return JsonResponse({'message': 'delete method!!'}, status=400)

해당 view는 FBV로 작성했으나 CBV를 배웠기 때문에 조금 더 갈무리 해보려한다.

profile
김죵입니당 ^^

0개의 댓글