[udemy] - Build a Backend REST API with Python & Django - Beginner 학습 정리
https://www.udemy.com/course/django-python/?referralCode=3B849741B22196721D94
https://github.com/LondonAppDev/profiles-rest-api
- 토큰을 발급하는 방법으로 아래와 같이 View를 만들고 Token 클래스를 사용해 생성하는 방법을 가장 많이 사용한다.
# rest_framework/authtoken/views.py
class ObtainAuthToken(APIView):
def post(self, request, *args, **kwargs): # post 요청일 때
# ...
# 토큰, 생성여부(bool 반환)
token, created = Token.objects.get_or_create(user=user) # 유저가 있으면 가져오고, 없으면 토큰을 생성한다.
return Response({'token': token.key})
- 이 강좌에서는 ObtainAuthToken를 상속받아 로그인 Token 발급을 수행한다.
class UserLoginApiView(ObtainAuthToken):
"""Handle creating user authentication tokens"""
renderer_classes = api_settings.DEFAULT_RENDERER_CLASSES
- renderer_classes는 클래스 변수 혹은 데코레이터로 사용할 수 있다. 뷰나 뷰셋에 대한 렌더러를 지정하는데 사용되며 응답의 콘텐츠 유형을 결정한다.
- DRF에서 자주 사용되는 데코레이터
@api_view: 함수 기반의 뷰를 API 뷰로 표시하고 요청/응답 처리를 제공합니다. 뷰에 지원되는 HTTP 메소드를 지정할 수 있습니다.
@permission_classes: 뷰나 뷰셋에 대한 액세스 권한을 지정합니다.
@authentication_classes: 뷰나 뷰셋에 대한 인증 클래스를 지정합니다.
@renderer_classes: 뷰나 뷰셋에 대한 렌더러를 지정하며, 이는 응답의 콘텐츠 유형을 결정합니다.
@throttle_classes: 뷰나 뷰셋에 대한 스로틀 클래스를 지정하며, 이는 API에 대한 요청 속도를 제한합니다.
@parser_classes: 뷰나 뷰셋에 대한 파서를 지정하며, 이는 수신된 요청 데이터를 처리합니다.
@serializer_class: 뷰나 뷰셋에 사용할 직렬화 클래스를 지정합니다.
@detail_route (비권장): 단일 인스턴스에 작용하는 뷰셋에 사용자 정의 작업을 추가합니다.
@list_route (비권장): 전체 쿼리셋에 작용하는 뷰셋에 사용자 정의 작업을 추가합니다.
@action: 특정 HTTP 메소드와 URL 경로를 가진 뷰셋에 사용자 정의 작업을 추가합니다.
@link (비권장): 뷰셋에 기반한 사용자 정의 하이퍼링크 작업을 추가합니다.
@format_suffix_patterns: 뷰나 뷰셋의 URL에 형식 접미사 패턴을 추가합니다.
@cache_response: 뷰나 뷰셋의 응답을 캐시합니다.
@api_view(['GET', 'POST']): 함수 기반 뷰에 직접 지원되는 HTTP 메소드를 지정할 수 있습니다.
- render reference :
https://hyun-am-coding.tistory.com/entry/8-Renderers
- DEFAULT_AUTHENTICATION_CLASSES는 settings.py의 REST_FRAMEWORK에 직접 정의할 수 있다. 그렇지 않다면 api_settings.DEFAULT_AUTHENTICATION_CLASSES를 사용해 DRF의 기본 설정 값을 가져와 정의할 수도 있다.
# rest_framework/views.py
from django.views.generic import View
from rest_framework.settings import api_settings
class APIView(View):
...
authentication_classes = api_settings.DEFAULT_AUTHENTICATION_CLASSES
# my_project/settings.py
REST_FRAMEWORK = {
...,
"DEFAULT_AUTHENTICATION_CLASSES": (
"rest_framework_simplejwt.authentication.JWTAuthentication",
"rest_framework.authentication.SessionAuthentication",
),
}
- reference :
https://kimdoky.github.io/django/2018/08/11/drf-Settings/
https://www.django-rest-framework.org/api-guide/settings/
- 강의 후기
- 딱히 기록을 할만한 내용이 없었다. 너무 많은 부분에 대해 누락을하고 정작 불필요한 항목들에 대한 강좌에 절반에 가까운 강의를 만들어 두었다.
'Study > django' 카테고리의 다른 글
DB를 먼저 설계하고 django와 연동하기 (3) - inspectdb로 생성된 models.py로 migrations 후 비교 (1) | 2023.12.08 |
---|---|
DB를 먼저 설계하고 django와 연동하기 (1) - 작업 정의 (0) | 2023.12.04 |
[udemy] Build REST APIs with Django REST Framework and Python 학습 후기 (0) | 2023.10.13 |
mysql에서 postgresql로 마이그레이션 시도를 하다 #2 (0) | 2023.10.11 |
mysql에서 postgresql로 마이그레이션 시도를 하다 #1 (0) | 2023.10.11 |
댓글