Django

· Django/utils
구글 맵으로 lat, lng를 받아 올 일이 있어서 구현해본 API입니다 def edit_place_coord(request, place_id): place = get_object_or_404(Place, id=place_id) if request.method == 'POST': lat = request.POST.get('lat') lng = request.POST.get('lng') if lat and lng: place.coord = f'POINT({lng} {lat})' # PointField 형식으로 변환 place.save() # return redirect('place_detail', plac..
· Django/orm
회사에서 비정규화를 할 일이 있었는데 데이터가 10만건이 넘어서 실 서버에 db히트 하는 만큼 성능에 신경을 써야됬습니다.그래서 쿼리를 불러 올 때 가장 빠르게 처리하는 방식이 무엇일 지 궁금해졌습니다.count(), annotate(Count()), len(prefetch)를 떠올렸고 비교해 봤습니다.count().count()의 경우 db에서 count를 해서 가져오는 방법입니다db에서 연산을 끝낸 후 가져오는 만큼 cpu와 메모리에는 부담이 없습니다. .count()는 일단 조건을 사용 할 수  없습니다. 연관 된 모든 객체를 count하기 때문에 soft delete된 것이나 filter 조건을 넣을 수 없습니다. soft 삭제를 구현하고 있는 테이블이라 필터 조건이 필요한 만큼 사용 할 수는 없..
· Django/orm
update_or_createDjango orm을 다루며 객체가 있으면 객체로 불러와서 사용하고 없으면 create를 해서 사용하려고 하는데 create 시 필수 값을 넣어줘야 했습니다. 그래서 if 문을 통해 분기를 하면 코드가 길어져 가독성이 떨어졌습니다.그래서 다른 방법이 있나 찾다가 update_or_create를 발견했습니다. Django의 update_or_create 메소드는 객체를 업데이트하거나 존재하지 않으면 생성하는 작업을 간편하게 처리할 수 있는 메소드입니다.update_or_create(defaults=None, **kwargs) defaults: 객체를 생성하거나 업데이트할 때 사용될 필드와 값을 포함하는 사전(dict).**kwargs: 객체를 조회할 때 사용할 필터 조건을 키워..
· Django/utils
데이터 작업을 하다보면 더미데이터가 필요 할 때가 있습니다그럴 때 편하게 작업하기 위해서 코드를 적어뒀습니다 더미 데이터 만들기1. Make image url dummy datapicsum.photo를 이용해서 무작위 image url을 만들어 주는 함수def make_random_url_use_picsum(): url = 'https://picsum.photos/200/300' # 이미지의 가로 200px, 세로 300px response = requests.get(url) if response.status_code == 200: random_image_url = response.url return random_image_url else: r..
· Django/admin
Codedef delete_queryset(self, request, queryset): for q in queryset: q.removed_at = timezone.now() q.save() Django admin default delete action override delete_queryset So I want to customize soft delete put that code in admin code and in model class put in this code you can soft delete to use delete() actiondef delete(self): self.removed_at = timezone.now() self.save()def ..
Django JWT 구현 코드pip install djangorestframework-simplejwt pip install and setting in setting.pyINSTALLED_APPS = [ ... 'rest_framework_simplejwt', ...] authentication settingREST_FRAMEWORK = { ... 'DEFAULT_AUTHENTICATION_CLASSES': ( ... 'rest_framework_simplejwt.authentication.JWTAuthentication', ) ...}  Use simplejwt library and url setting..
JWT 이란JWT는 Json Web Token의 약자로 일반적으로 클라이언트와 서버 사이에서 통신할 때 권한을 위해 사용하는 토큰이다. 웹 상에서 정보를 Json형태로 주고 받기 위해 표준규약에 따라 생성한 암호화된 토큰으로 복잡하고 읽을 수 없는 string 형태로 저장되어있다. JWT 구성JWT는 헤더(header), 페이로드(payload), 서명(signature) 세 파트로 나눠져 있으며, 아래와 같은 형태로 구성되어 있다.세 개의 구성은 .으로 구분되어있다.헤더 (Header) 어떠한 알고리즘으로 암호화 할 것인지, 어떠한 토큰을 사용할 것 인지에 대한 정보가 들어있다. 정보 (Payload) 전달하려는 정보(사용자 id나 다른 데이터들, 이것들을 클레임이라고 부른다)가 들어있다..
· Django/model
배경Django에 상품에 카테고리를 지정하려고 했습니다.상품에는 카테고리가 N개 지정이 가능하고 카테고리에서도 상품이 N개 지정 가능한 N:N관계가 만들어집니다처음에 Foreign Key로 만들어서 prefetch를 통해서 원하는 값들을 가져오는 방안을 떠올랐습니다.그러면 상품에서 원하는 카테고리 값들을 가져오고 싶을때 모든 상품에서 해당 카테고리에 속해있는 것을 훑어보는 작업이 필요합니다그러한 이유로 카테고리에도 상품을 참조해야하는데 N:N이면 ManyToMany를 지정해 Django에서 자동으로 pk가 담긴 중간 테이블을 만들어줍니다.그러나 자동으로 만들게 되면 비즈니스 로직 상 좋지 않은 결과를 초래합니다. 예를들어 설정 시각이나 이유(예시입니다)를 적어야 할 시 칼럼 추가가 어렵기 때..
두잇 두두
'Django' 카테고리의 글 목록