django의 lazy 함수 이해하기 source: django/utils/functional.pylaza함수가 하는 일은 callable객체를 lazy evaluated callable 객체로 바꿔준다. 자세한건 아래의 코드를 보자. 주석 앞에 달린 순서대로 보면 보기 쉽다.#1 함수와 resultclasses를 입력으로 받는다. def lazy(func, *resultclasses): """ Turn any callable into a lazy evaluated callable. result classes or types is required -- at least one is needed so that the automatic forcing of the lazy evaluation code is tr..
Meta class파이썬에서 object는 "class"라 불리는 object에 의해 생성된다. 즉 다시말해 class도 object이다.class도 object이기 때문에 object와 같은 방식으로 필드를 추가하거나 삭제하는 연산이 가능하다.class MyClass: pass obj = MyClass() MyClass.val = 3 MyClass.print = lambda self : print("Hello") obj.print() ---------------------------------- Hello다만 차이점은 class의 필드를 수정하면 이미 생성되 있던 instance도 포함해서 모든 instance들이 같이 수정된다. 이러한 class object를 만들어내는 또 다른 speci..
Iterator (이터레이터) : 한번에 하나의 값을 반환하는 객체iterable : 가지고 있는 값을 한번에 하나씩 반환할 수 있는 객체 (e.g. list, tuple..) 리스트나 튜플은 한번에 모든 값을 반환하므로 iterable 객체이지만 iterator는 아니다. 내장 함수 iter를 사용하면 iterator 객체로 사용할 수 있다.l =[1, 2, 3, 4] pritn(type(iter(l))) ---------------------- list_iteratoriterator에서 값을 한개씩 받는 방법내장 함수 next를 사용한다.l =[1, 2, 3, 4] l_iter = iter(l) print(next(l_iter)) print(next(l_iter)) ---------------..
GraphViz를 이용한 Django 모델 다이어그램 그리기윈도우환경에서 GraphViz를 이용해 Django 프로젝트의 모델들의 다이어그램을 그려보겠습니다. 먼저 아래 링크로 들어가 GraphViz를 설치합니다. https://graphviz.gitlab.io/_pages/Download/Download_windows.html (msi, zip 아무파일이나 편한것을 선택하셔서 설치하시면 됩니다.) 설치후 설치파일 안에 있는 bin 폴더를 환경변수에 추가해줍니다. ex) C:\Program Files (x86)\Graphviz2.38\bin 커맨드창을 열어 dot 명령이 잘 작동하는지 확인합니다. 파이썬과 GraphViz를 연결시켜줄 pygraphviz를 설치합니다. 또는 Dotplus를 설치하셔도 됩니..
JWT JWT(Json Web Token)stateless 서버 : 서버에서 상태정보를 저장하지 않음. 클라이언트측에서 들어오는 요청만으로만 작업을 처리쿠키 : 클리이언트에 저장되는 키와 값이 들어있는 작은 데이터 파일. 이름, 값, 만료 날짜, 경로 정보 등서버에 접속할 때 쿠키가 헤더에 포함되 자동으로 전송되어서 로그인 유지. 다른 사용자가 로컬 쿠키 데이터를 볼 수 있기 때문에 보안에 취약 . 세션을 이용해 해결 세션 : 서버 메모리에 저장되는 정보. 서버에 저장되어서 쿠키와 다르게 사용자 정보가 노출 되지않음세션을 이용한 로그인 과정 id/pw 입력 로그인서버에서 사용자에게 받은 정보를 받아 인증을 거치면 서버 메모리에 유일한 세션 ID를 생성해 사용자 id와 매핑 정보를 저장클라아언트에 세션 I..