본문 바로가기
관리자

Programming-[Backend]

(393)
[TIL] Django prefetch_related, Prefetch 2depth, 모델 필드 정보 조회 prefetch_related prefetch_related 구문으로 1:N 관계에서 1 -> N 으로 접근하여 데이터들을 한 번에 fetch(eager_loading)할 수 있다. Company : Team = 1 : N, Team: Color = 1:1 인 경우라면, 아래와 같이 prefetch 구문을 적용하면 된다. Prefetch class는 prefetch_related 구문을 더 상세히 사용할 수 있게 해준다. "team_set" : Company 모델에서 Team 모델을 참조하기 위한 related_name이다. models.py에서 따로 지정하지 않았다면 "{이름}_set"으로 자동으로 설정된다. 이름 찾는법은 아래 모델 필드 정보 조회 섹션에서 확인할 수 있다. queryset : tea..
[TIL] python 빈 리스트/None check, django test request값 안 변할 때 -> 테스트 메서드 이름 중복 1. python none check ==은 금지, a is None으로 체크! a = [] 일때, a is None = False, isinstance(a, list) = True a = None 일 때 a is None = True 2. django test request값 안 변할 때 -> 테스트 메서드 이름 중복을 확인하자 테스트 메서드 이름이 같으면 앞에 껄 실행해도 뒤에 나온걸로 override 된다. 아래 코드와 같이 같은 이름으로 test_update_something이라는 메서드가 중복되면, 위 쪽 코드의 data ={...} 내부의 값을 변경하고 테스트를 실행해도, 아래 테스트 메서드가 실행되면서 혼란을 겪을 수 있음! def test_update_something(self, *args..
[TIL] django.conf settings, 환경 설정 정보 상대 참조하기 보통 Django 에서 설정 파일은 base.py -> local.py, development.py 등으로 상속하여 사용하는 구조이다. 그런데 이 설정 파일들의 값을 참조할 때, 직접 from settings.base import {SOMETHING} 으로 하면 안된다. 환경에 따라 값을 자동으로 상대 참조할 수 있도록 from django.conf import settings 로 settings를 참조한 뒤 값을 사용해야한다. 직접 Import 시 참조 정보가 잘못될 수 있다. 이후 다음과 같이 settings.SOMETHING 으로 사용하면 된다.
[탐험] ffmpeg-ffprobe로 AWS S3에 있는 Video 파일 메타데이터 추출: 비디오 스트림, AWS Presigned URL 방식 이해 2 목차 1. 영상 데이터에 대한 개념 2. AWS Presigned URL 3. 파이썬 서브프로세스, os.system 차이 4. ffmpeg, ffprobe, 메타데이터, 멀티미디어 파일 분석의 한계 참고: 사용 코드(파이썬, ffprobe) video_object_key = settings.AWS_MEDIA_LOCATION + "/" + copy_upload_path ##AWS에서 영상에 대한 presigned url 가져오기 location = boto3.client("s3").get_bucket_location( Bucket=settings.AWS_STORAGE_BUCKET_NAME )["LocationConstraint"] url = boto3.client( "s3", config=Config(s..
ngrok: 로컬 서버 인터넷 연결, 콜백 api 예제(AWS 람다) 1. ngrok 이해 ngrok 실행화면 jp로 끝나는 ngrok에서 갖고 있는 일본 서버로 나의 로컬 서버를 연결하여 인터넷에 노출해주었다.(포워딩) 실제 인터넷에 연결된 아무 컴퓨터에서나 Forwarding으로 변경된 https://로 시작하는 주소로 요청을 보내면 HTTP Requests가 정상적으로 들어오는 것을 확인할 수 있다. ngrok 설치 및 실행 방법. 엄청 간단함 ngrok은 내 컴퓨터의 로컬 서버를 ngrok에서 갖고 있는 ip를 이용하여 인터넷으로 연결시켜준다. 그리고 해당 서버로 들어오는 요청을 간단하게 기록(로깅) 해준다! ngrok 사이트에 가입하고, 설치하면 된다. mac 유저라면 brew install ngrok window 유저라면 ngrok.exe를 다운로드 받고 터미널..
[탐험] ffmpeg-ffprobe로 AWS S3에 있는 Video 파일 메타데이터 추출: 비디오 스트림, AWS Presigned URL 방식 이해 1 목차 1. 영상 데이터에 대한 개념 2. AWS Presigned URL 3. 파이썬 서브프로세스, os.system 차이 4. ffmpeg, ffprobe, 메타데이터, 멀티미디어 파일 분석의 한계 사용 코드(파이썬, ffprobe) video_object_key = settings.AWS_MEDIA_LOCATION + "/" + copy_upload_path ##AWS에서 영상에 대한 presigned url 가져오기 location = boto3.client("s3").get_bucket_location( Bucket=settings.AWS_STORAGE_BUCKET_NAME )["LocationConstraint"] url = boto3.client( "s3", config=Config(signa..
[TIL] Django ORM values, annotate, Subquery, OuterRef, JSONField, Type Cast 부분 적용 자세한 내용은 Django 공식 문서에 있다. 여기서는 기존 다른 SQL에서 자주 사용하는 기능들을 한 눈에 대략적으로 파악할 수 있도록만 정리한다. Django 공식 문서 - Queryset https://docs.djangoproject.com/en/4.1/ref/models/querysets/ 코드 User.objects .annotate( user_name=F("name"), comment_file_path=Subquery( Comment.objects.annotate(file_path=F("data__file_path")) .values("data__file_path") .filter(user=OuterRef("pk"))[:1] ), ) .values("user_name", "comment_fi..
[TIL] 부모 Serializer field 값 제거 부모의 field값을 제거하기 기존 View가 ParentSerializer을 사용해서 응답 필드값들을 내보내고 있었는데, 기존과 다르게 재사용하다보니 unnecessary_id=null로 불필요하게 클라이언트에게 전달되는 상황. 해당 ParentSerializer를 ChildSerializer로 한 번 더 감싸고, __init__ 메서드에서 self.fields로 unnecessary_id 값을 제거함 class ChildSerializer( ParentSerializer ): def __init__(self, *args, **kwargs): """ pop unnecessary_id """ super(ChildSerializer, self).__init__( *args, **kwargs ) self.f..