분류 전체보기
-
[Django] Permission_classes 사용하여 인증하기 (feat.DRF)파이썬/Django 2023. 1. 16. 10:09
Permission_classes란 사용법 from rest_framework.permissions import IsAuthenticatedOrReadOnly class PhotoDetail(APIView): permission_classes = [IsAuthenticated] 원하는 클래스에 위의 코드를 작성해주면 끝이다. Authentication 인증의 종류 지원하는 인증의 종류는 총 4가지가 있습니다. SessionAuthentication 세션을 통한 인증 여부 체크 APIView를 통해 디폴트 지정 (우선순위 1) BasicAuthentication Basic 인증헤더를 통한 인증 수행 ex) Authorization: Basic YWxsaWV1czE6MTAyOXNoYWtl APIView를 통..
-
[Django] APIView로 api 만들기파이썬/Django 2023. 1. 13. 15:10
생성할 api [GET] [POST] /amenities [GET] [PUT] [DELETE] /amenities/1 amenities는 room 앱(App)안에 있는 모델(model)이기 때문에 room/views.py에 코드를 작성해준다. 코드작성이 필요한 파일은 총 세개 room/views.py room/urls.py room/serializers.py (생성해야함) api 구현할 클래스 생성하기 📁 room/views.py api/v1/amenities 를 구현할 클래스 Amenites(APIView) - 전체 어메니티 내역 확인 class Amenities(APIView): def get(self, request): pass def post(self, request): pass api/v1/am..
-
[Django] Model View Sets 사용하기파이썬/Django 2023. 1. 12. 16:44
📁 categories/serializers.py from rest_framework import serializers from .models import Category class CategorySerializer(serializers.ModelSerializer): class Meta: model = Category # fields = 어떤 필드를 보이게 할지 설정 # 모든 필드 보이게 하기 fields = "__all__" 카테고리라는 모델을 serializer 번역기에 객체를 설정해줌 자동으로 create update등의 메소드가 생성된다. 다만 보여줄 필드는 선택해야 함 제외시킬 필드를 고르기 class Meta: # 제외시킬 필드 고르기 exclude = ( "created_at", ) 보여줄..
-
[Django] APIView를 이용한 views.py 리팩토링 1파이썬/Django 2023. 1. 11. 17:46
APIView로 views.py 리팩토링하기 먼저 APIView를 import 해준다. from rest_framework.views import APIView 원래 있던 @api_view()와 함수를 갖다버리고 클래스를 생성한다. class Categories(APIView): # 모든 메소드는 항상 self 인자를 받아야 함 def get(self, request): all_categories = Category.objects.all() serializer = CategorySerializer(all_categories, many=True) return Response(serializer.data) def post(self, request): serializer = CategorySerializer(..
-
[Django] Rest 프레임워크로 [PUT] API 만들기 (feat. api_view, serializer)파이썬/Django 2023. 1. 10. 19:26
PUT 메소드 만들기 - 객체 수정 categories/views.py elif request.method == "PUT": serializer = CategorySerializer( category, # 수정할 카테고리 데이터를 가져온다 data=request.data, # 사용자가 보낸 데이터 partial=True, ) if serializer.is_valid(): # 데이터가 유효하다면 updated_category = serializer.save() # save를 요청하면 자동으로 serializer.py에 있는 update 메소드가 실행된다. return Response(CategorySerializer(updated_category).data) else: return Response(seri..
-
[Django] Rest 프레임워크로 [POST] API 만들기 (feat. api_view, serializer)파이썬/Django 2023. 1. 9. 18:08
새 카테고리 만드는 post api 만들기 POST categories/ @api_view(["GET", "POST"]) def categories(request): # GET 요청일 때 if request.method == "GET": all_categories = Category.objects.all() serializer = CategorySerializer(all_categories, many=True) return Response(serializer.data) # POST 요청일 때 elif request.method == "POST": serializer = CategorySerializer(data=request.data) 유효성 검사하기 📁 categories/serializers.py c..
-
[Django] Rest 프레임워크로 [GET] API 만들기 (feat. api_view, serializer)파이썬/Django 2023. 1. 8. 22:39
serializer란? Django Python 객체를 JSON으로 번역해주는 번역기 같은 것 url 만들기 GET /categories 📁 categories/serializers.py from rest_framework import serializers class CategorySerializer(serializers.Serializer): pk = serializers.IntegerField() name = serializers.CharField(required=True) kind = serializers.CharField() created_at = serializers.DateTimeField() CategorySerializer : categories 모델을 어떻게 보여줄지 결정하는 함수 cat..
-
[Django] 어드민 액션 추가하기, 필터 만들기파이썬/Django 2023. 1. 7. 18:08
액션 함수 만들기 가격을 0원으로 만들어주는 액션 📁 rooms/admin.py @admin.action(description="가격 0원으로 설정하기") def reset_prices(model_admin, request, rooms): for room in rooms.all(): room.price = 0 room.save() 1. description에 설정한 문구는 어드민 페이지에서 액션을 고를 때 뜨는 문구이다. 2. 인자로는 model_admin과 request, rooms 를 넣어준다. 3. RoomAdmin 클래스에 액션 필드를 넣어준다. 📁 rooms/admin.py @admin.register(Room) class RoomAdmin(admin.ModelAdmin): actions = (..