본문 바로가기

728x90
반응형

Python

(96)
Python: Error handling # 에러를 어떻게 다룰지를 쉽게 파악해보자 Error handling을 어떻게 할지 도구들을 살펴보자 def is_callable(obj): try: call_result = obj() return {"callable":True, "result": call_result} except: return {"callable":False, "result": obj} try: """Some Error Logic""" except Exception as e: for i in dir(e): print(i, is_callable(eval(f"e.{i}"))) 위와 같이 하면 Exception을 어떤 method를 통해 다룰지 살펴보기 좋다.
Python: 중첩 list comprehension # 이중 컴프리헨션 # itertools # chain 리스트 안에 리스트가 담긴 형태, 다른 표현으로는, 2차원 행렬을 하나의 리스트로 담고자 할때 다음과 같이 사용 가능 test_list = [[a,b], [c,d], [e,f]] new_list = [j for i in test_list for j in i] itertools 라이브러리의 chain.from_iterbale()을 통해서도 가능 from itertools import chain test_list = [[a,b], [c,d], [e,f]] new_list = list(chain.from_iterable(test_list)) 결과: [a,b,c,d,e,f]
Python: 색 추출 # pick color # PIL Python pillow, PIL.image 를 활용해서 가장 많이 사용된 색깔과 가운데 사용된 색깔을 추출해보자 우선 Pillow library 설치 $ pip install Pillow 1. 가장 많이 사용된 색 추출 from PIL import Image from collections import Counter def get_most_used_color(image_path): # Open the image using Pillow image = Image.open(image_path) # Convert the image to RGB mode (in case it's grayscale or has an alpha channel) image = image.convert('RGB') # Get the wi..
Python Django: select_related 언제 쓰고, 왜 쓰냐? 1) select_related 예시 1. my_fr = MyFruit.objects.get(fruit_id=fr_id, customer=customer) 2. my_fr = MyFruit.objects.select_related('fruit').get(fruit_id=fr_id, customer=customer) 1과 2는 어떤게 더 효율적이거나 좋은 방법일까? ------------- 1과 2 중 더 효율적인 방법은 상황에 따라 다르다. my_fr = MyFruit.objects.get(fruit_id=fr_id, customer=customer) 이 방법은 MyFruit 객체를 가져올 때, 연결된 fruit 객체는 가져오지 않습니다. 따라서 이후에 my_fr.fruit에 접근..
Python Django: 동시 접속 로그인 막기 # session # session_key Django를 통해서 동시 접속을 막기 원리: 로그인 할 때 생기는 session_key를 DB에 저장 하고, 새로 로그인이 될 때 기존 session_key를 유저의 DB에서 불러와서 DB의 Session에서 해당 session_key를 지움으로써 기존 로그인은 해지 시키기 # models.py class User(AbstractUser): username = models.CharField(max_length=150) session_key = models.CharField(max_length=40, null=True, blank=True) # views.py from django.contrib import auth user = User.objects.get("로그인하려는 유저") if user.sess..
Python Django - request session 이용하기 # get 에서 post로 data 넘기기 get으로 받은 data를 post로 넘겨주고 싶은데, 보안상 html, javascript 등에 노출시키고 싶지 않은 경우 get에서 request.session에 담아서 post에서 불러오면 된다. if request.method == 'GET' request.session['sample_value'] = 'It is sample' return render(request, 'get.html') if request.method == 'POST' print(request.session['sample_value']) # output: it is sample return JsonResponse({"response":"success"})
Django: QuerySet to Json #QuerySet Json으로 보내기 # serializer # JsonResponse Djano QuerySet 값을 Json으로 보내줄 때, data를 serialize를 하지 않고 보내면 다음과 같은 오류 발생 TypeError: Object of type MyCoupon is not JSON serializable 따라서 serialize를 해줘서 보내야 한다. from django.core import serializers 위와 같이 serializers를 import해서 이용해도 되지만 ORM query로 얻은 QuerySet을 .values()로 뽑아서 보내줘도 된다. from django.http import JsonResponse from .models import YourModel def your_view(request): queryset = YourModel.object..
Django: 시간 변환 # timezone, pytz # UTC, Asia/Seoul Django를 처음 설치하면, 시간과 관련된 설정이 아래와 같이 되어 있습니다. # settings.py TIME_ZONE = 'UTC' 우선, UTC가 무엇일까요? UTC (협정 세계시)는 Coordinated Universal Time의 약자로, 세계 표준 시간을 의미합니다. UTC는 현대 국제 시간 체계의 기준으로 사용되며, 지구의 자전 속도와 태양 시간을 기반으로 합니다. UTC는 전 세계의 시간대와 동기화되어 있어, 국제적인 커뮤니케이션과 데이터 처리에 있어서 일관된 시간을 제공합니다. UTC는 그리니치 평균시 (GMT)와 동일한 시간대를 기준으로 하지만, 두 개념 사이에는 약간의 차이가 있습니다. GMT는 지구 자전 속도를 기준으로 한 시간 체계이지만, UTC는 원자시계를 기준으로 정확한 시간..

728x90
반응형