본문 바로가기

Python36

[Django] fixtures 1️⃣ Django fixture Django fixture는 애플리케이션에서 사용하는 데이터를 JSON 형식으로 저장해두고, 나중에 사용할 수 있도록 하는 기능이다. 운영 서버에 배포하기 전에 초기 데이터 작업을 수행하거나, 테스트 데이터를 생성하는 등의 목적으로 사용할 수 있다. 2️⃣ Django fixture의 주요 기능 fixture는 데이터 초기화나 테스트 데이터 생성 등에서 사용할 수 있다. 애플리케이션에서 사용하는 모든 모델을 대상으로, 데이터를 추출하고 로딩할 수 있다는 점에서 유용하게 사용할 수 있다. dumpdata와 loaddata는 Django의 스키마 변화에 대응하여 데이터를 추출하고 로딩할 수 있어, 데이터 마이그레이션 등에서도 사용할 수 있다. 3️⃣ dumpdata - Dj.. 2023. 6. 22.
[DRF] permission_classes = [A, B]와 [A & B]의 차이 1️⃣ 선요약 permission_classes = [A, B] permission_classes = [A & B] 결과적으로 둘은 거의 같다. 그러나 실행 방식에 차이가 있고, 상황에 따라 다르지만, 논리곱(AND)연산만을 수행할 경우, [A, B]의 방식이 일반적으로 조금 더 이점이 있다. 단, 두 조건을 중첩해서 OR과 비교할 경우(괄호를 통한 우선순위가 필요하다면), &를 사용하는 것에 이점이 있다. 2️⃣ comma(,)를 사용했을 때 DRF의 .check_permissions(…) 메서드를 확인해보자. def check_permissions(self, request): """ Check if the request should be permitted. Raises an appropriate ex.. 2023. 6. 21.
[Django] bulk_create bulk_create는 Django의 ORM에서 제공하는 메서드로, 여러 개의 객체를 한 번에 데이터베이스에 저장하는 데 사용한다. ModelClass.objects.bulk_create(objects, batch_size=None, ignore_conflicts=False) ModelClass: bulk_create를 호출할 모델 클래스. 객체들은 해당 모델의 인스턴스여야 한다. batch_size (선택적): 대량 삽입 작업을 일괄 처리할 때 한 번에 처리할 객체의 수를 지정. 기본값은 None으로, 모든 객체를 한 번에 처리한다. ignore_conflicts (선택적): True로 설정하면 중복되는 객체를 무시하고 나머지 객체를 계속 저장. 기본값은 False로, 중복 객체가 발견되면 Integr.. 2023. 6. 16.
[DRF] Permissions Permissions Permissions를 가져오는 법 from rest_framework.permissions import Permissions를 통해 View에 필요한 권한을 설정할 수 있다. REST 프레임워크에는 특정 View에 액세스할 수 있는 사용자를 제한할 수 있는 여러 Permission class가 포함되어 있다. DRF에서 기본적으로 제공하는 Permission들은 다음과 같다. AllowAny IsAuthenticated IsAdminUser IsAuthenticatedOrReadOnly DjangoModelPermissions DjangoModelPermissionsOrAnonReadOnly DjangoObjectPermissions 사용 예시) class MoongTangView.. 2023. 6. 10.
[DRF] GenericAPIView와 Mixins DRF에서는 GenericAPIView와 다양한 Mixin 클래스를 결합해 APIView를 구현할 수 있다. 1️⃣ GenericAPIView GenericAPIView는 queryset과 serializer_class를 지정해줄 수 있다. queryset - View에서 객체를 반환하는 데 사용할 Queryset. 일반적으로 queryset을 설정하거나 get_queryset() 메서드를 오버라이딩 해야함. serializer_class - 입력의 Validation Deserialize, 출력의 Serialize에 사용하는 serializer 일반적으로 Serializer를 설정하거나 get_serializer_class() 메서드를 오버라이딩 해야함. APIView와 비교 # APIView 사용 c.. 2023. 6. 7.
[DRF] ModelSerializer와 CreateModelMixin 사용하기 ModelSerializer 기본적으로 Serializer를 상속. .create() 및 .update() 메소드 제공 serializer에 대한 validator(예: unique_together validator)를 자동으로 생성 예시) title과 content가 있는 Article 모델 from django.db import models class Article(models.Model): title = models.CharField(max_length=25) content = models.CharField(max_length=25) ModelSerializer를 사용해 ArticleSerializer 생성 from rest_framework import serializers from .models.. 2023. 6. 6.
[DRF] Serializer - depth, repr() 1️⃣depth Article이 "title", "content", "author" 필드를 가지고 있고, 이 중 author 필드가 user와 ForeignKey관계라고 가정. class Article(models.Model): title = models.CharField ... content = models.CharField ... author = models.ForeignKey(User, ...) class ArticleSerializer(ModelSerializer): class Meta: model = Article fields = '__all__' depth = 1 이렇게 Serializer에 depth를 1로 주면 GET 요청으로 Article 객체를 가져올 때, User의 모든 정보까지도 가.. 2023. 6. 6.
가변인자 *args, **kwargs 1️⃣ **args (Positional Variadic Arguments) *args는 위치 인자를 임의의 개수로 받을 수 있다. 함수를 호출할 때 넣은 위치 인자들은 튜플로 묶여서 함수 내부로 전달된다. def foo(*args): print(args) #(1, 2, 3, 4, 5) foo(1, 2, 3, 4, 5) 2️⃣ **kwargs (Keyword Variadic Arguments) **kwargs는 키워드 인자를 임의의 개수로 받을 수 있다. 함수를 호출할 때 넣은 키워드 인자들은 딕셔너리로 묶여서 함수 내부로 전달된다. def var(**kwargs): print(kwargs) # {'name': 'codemte', 'age': 100, 'status': 'good', 'a': False,.. 2023. 5. 31.
구글 소셜 로그인 in Django - 2. 유저 정보 받아오기 구글 소셜 로그인 시 애플리케이션 세팅이 되어있어야 한다. 해당 정보는 구글 소셜 로그인 in Django - 1.애플리케이션 세팅하기에서 확인 구글 소셜 로그인 in Django - 1. 애플리케이션 세팅하기 Google Developers 설정 1️⃣ 프로젝트 만들기 Credentials Page로 이동 API 및 서비스를 통해 들어가서 프로젝트를 만들 수 있다. Oauth 동의 화면으로 들어가서 앱 정보 입력 후 저장. OAuth 동의 화면 간단 codemte.tistory.com 서버 측 웹앱 웹 서버 애플리케이션용 OAuth 2.0 사용 | Authorization | Google for Developers 이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch .. 2023. 5. 31.