본문 바로가기
관리자

Programming-[Backend]

(421)
Python PIL _getexif, TAGS 적용, AttributeError, JPEG, TIFF 차이 가장 표면적인 응용 기술 부분부터 살펴나간다. 1. PIL의 _getexif, TAGS 다음 코드를 통해 이미지 파일의 메타정보(촬영일, 촬영 장소 gps, 이미지 크기 등)를 얻어낼 수 있다. from PIL import Image, ExifTags image_file = Image.open("./열고자 하는 그림 파일") exif = image_file._getexif() if exif: exif_tag = {ExifTags.TAGS[k] for k, v in exif.items() if k in ExifTags.TAGS} PIL은 Python의 Image 처리 라이브러리이다. 여기서 Image 클래스를 이용하여 Image들을 처리할 수 있다. ExifTags는 이미지 파일의 메타 정보에 대한 key..
[탐험] Django admin에서 view, template, render 다루기. 비동기 처리 버튼 만들기 1. 목표 Django admin 페이지로 어떤 파일들을 모아서 압축 파일을 생성하는 비동기 작업이 완료되면, 그것들을 다운로드 받을 수 있는 페이지 제작 2. 구조 3. 구조 설명 3-1. django admin django admin은 모델을 생성하고 admin에 등록하면, admin 주소로 들어오는 요청을 보낼 수 있는 FORM과 화면을 구성하는 TEMPLATE을 간단히 만들 수 있도록 해준다. @admin.register로 admin에 모델을 등록하고 get_urls로 path와 일치하는 요청이 들어왔을 때 특정 view로 가서 로직을 처리하게 할 수 있다. meta_data로 app_label값과 model_name값을 불러와서 view의 name을 동적으로 만들어줄 수 있다. 이 name값은 ..
[TIL] django data migration 데이터 마이그레이션 https://simpleisbetterthancomplex.com/tutorial/2017/09/26/how-to-create-django-data-migrations.html 데이터베이스의 Schema를 변경하는게 아니라 data들을 조작할 수 있는 것을 Data Migrations라 한다. 새로운 필드를 추가하고 그 값을 넣고 싶으면 models.py에서 해당 필드를 null=True를 주거나 default값을 주고 schema변경 마이그레이션 적용 → data migration → null=False로 변경하는 순서를 적용해야한다. 빈 마이그레이션 파일을 만들고, 원하는 함수를 작성한 뒤 migrations.RunPython()안에 함수명을 적어주면 적용된다. def **slugify_title*..
[TIL] FloatField, DecimalField 차이점 / 위경도 표시 소수점과 거리값 Django의 Serializer에서 정의하는, 소수점 값을 사용할 수 있는 필드는 FloatField와 DecimalField가 있다. 결론적으로는 아래 참조에 나와있듯이 해당 필드를 이용해서 계산이 필요한 경우는 DecimalField를 사용하는 것이 좋다. DecimalField - str 기반이다. '126.123541231'로 표시된다. coerce_to_string = False로 옵션을 적용하면 decimal 타입으로 표시할 수 있다. - max_length, decimal_places 옵션을 통해 최대 길이와 소수점 자리수를 지정할 수 있다. 기타 상세한 내용은 참조 링크 ref) 스택오버플로우 https://stackoverflow.com/questions/2569015/django-fl..
[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..