Django : 역참조, queryset
2023. 4. 7. 00:18
Python/Django
python Django를 쓰는 좋은 이유중 하나는 아마 Django의 강력한 ORM(Object Relational Mapping) 덕분도 있을 것이다. 나도 자세히는 모르고 그냥 그렇구나라고 알고만 있었지만 직접 검색해보니 내가 알고 있던 것 이상으로 Django는 개발자에게 유용했다. 이번 글을 통해 Django의 강점인 QuerySet과 관련 구문에 대해서 정리하고 그 장점들을 남겨볼까한다. 모델 클래스,필드를 통한 관계, 마이그레이션, 나도 잘 모르는 매니저 등등 다양한 Django ORM 요소들이 있다. 그렇지만 특히 쿼리셋과 관련된 구문은 이전에 이 구문들을 활용했으면 가독성을 증가시키고 코드를 더 짧게 쓸 수 있었을텐데.. 라는 생각이 먼저 들정도로 다양하고 강력한 기능들을 지녔다. 1. ..
Python : Itertools 조합형 이터레이터
2023. 3. 24. 16:36
Python/Python
간혹가다가 내가 가진 자료 구조에서 순열 혹은 조합에 의거해서 요소를 뽑아야할 때가 있다. 루프를 돌려서 하려면 번거롭기 때문에, 이럴 때에는 itertools에서 permutation, combination, combination with replacement, product를 사용하면 매우 편하게 출력할 수 있다. 공통적으로 순서쌍들을 튜플에 담긴 iterable한 객체로 반환하니, 리스트 같은데 담거나 for를 사용하여 루프를 돌려 사용하면 된다. next()를 사용해도 되지만 굳이...? from itertools import permutations newList = [i for i in range(3)] for i in permutations(newList, 2): print(i, end=' '..
Python : 표현식(Comprehension)
2023. 3. 24. 11:08
Python/Python
python에서 한줄로 자료구조를 생성할때 사용하는 comprehension 기능을 정리해볼까 한다. comprehension을 사전에서 검색해보면 이해력이라는 단어가 나오는데 사실은 함축, 내포라는 의미로 사용한 게 아닐까? 만약 그렇다면 왜 comprehension이라는 단어를 썼는지 이해는 간다. 이해력보다는 말이다. 컴프레헨션, 선언과 동시에 자료구조를 채워버리는 방법이다. 그 경제력은 코드만으로도 알아볼 수 있다. A = [] for i in range(10): A.append(i) B = [i for i in range(10)] A 와 B는 같은 리스트지만 A를 생성하는데에는 약 3줄이, B를 생성하는데에는 1줄이 필요했다. 여기서 조건이 여러개 필요하다거나 하면 A는 더 늘어나야만 할것이다...
Python : 클로저(Closure), 데코레이터(Decorator)
2023. 3. 23. 14:16
Python/Python
오늘도 데코레이터에 대한 설명이 충분치 않아 이에 대한 설명을 더 찾아보았다. 설명을 찾으려고 보니 데코레이터를 설명하기 이전에 클로저를 설명하는 글이 많았는데, 이를 찬찬히 살펴보니 데코레이터의 구현의 대부분이 클로저를 이용하여 이루어지기 때문이라고 나는 이해했다. 클로저에 대해 알아보기 전에 중첩함수와 자유변수를 먼저 알아보자. 중첩함수란 함수 내부에서 정의된 함수를 의미하는데 함수 내부에서만 호출 가능하기 때문에 로직을 분리하거나 캡슐화를 위해 사용된다. 아래 예제에서 inner_function은 중첩함수이다. 자유변수란 매개변수도, 지역변수도 아니면서 함수 외부에서 정의되었지만 함수 내부에서 사용하는 변수를 말한다. 아래 예제에서 inner_function 입장에서는 x는 자유변수다. def ou..
Python : 컨텍스트 관리자, with <객체> as <변수명>
2023. 3. 23. 09:47
Python/Python
file을 오픈할 때 쓰는 with as 구문. 보통 파일을 오픈한 뒤 자동적으로 close 해주는 구문으로 알고 있는데, 이 기능 하나만 가지고 이런 구문이 생겼을거라 생각되지 않아 추가적으로 찾아보게 되었다. 결론적으로 말하면 file을 오픈할 때만 쓰는 것이 아닌 쓰레드를 락인해놓고 자동적으로 푼다거나 데이터베이스 연결을 한 뒤 자동적으로 닫거나 하는 경우처럼 사용 뒤에 자동적으로 무언가 나가거나 끌 필요가 있을 때 사용된다는 걸 알게 되었다. with as 객체가 중간에 나와서 당황했지만 흔히 쓰는 파일 오픈을 위해 open()을 쓰는 경우는 open()의 결과로 file 객체가 리턴되기 때문인 것도 추가적으로 알게 되었다. 이 구문의 이름은 컨텍스트 관리자로 리소스의 할당과 해제를 위해 만들어졌..
나의 첫 Django Project : community - 3 -
2022. 8. 22. 23:37
Python/Django
https://velog.io/@hidaehyunlee/Django-MTV-%ED%8C%A8%ED%84%B4 [Django] MTV 패턴 자신이 하려는 작업이 무엇인지 파악하면 MTV 중 어느 부분을 작업해야하는지 명확해진다. velog.io 위 글을 참고해서 쓴다. django는 다른 프레임워크와 같이 MVC 패턴을 충실히 따른다. MVC는 Model View Controller의 약자로, 간단히 설명하면 user가 어떤 기능을 행할시에 Controller가 Model에서 정의한 데이터 형식에 따라 기능을 동작하고 결과적으로 View로써 보여지는 디자인 패턴을 뜻한다. 세 가지 기능이 독립적으로 존재하여 유지 보수가 유리하고 편리하다는 장점이 있다. Django 에서는 MTV. Model Templat..
나의 첫 Django Project : community - 2 -
2022. 8. 22. 20:55
Python/Django
시작하기 앞서서 mysql을 설치한다. https://dev.mysql.com/downloads/mysql/ MySQL :: Download MySQL Community Server Select Operating System: Select Operating System… Microsoft Windows Ubuntu Linux Debian Linux SUSE Linux Enterprise Server Red Hat Enterprise Linux / Oracle Linux Fedora Linux - Generic Oracle Solaris macOS Source Code Select OS Version: All Windows (x86 dev.mysql.com 설치 후 환경변수 설정까지는 전과 비슷한 흐름이지..
나의 첫 Django Project : community - 1 -
2022. 8. 22. 16:56
Python/Django
https://code.visualstudio.com/ Visual Studio Code - Code Editing. Redefined Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications. Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows. code.visualstudio.com https://www.anaconda.com/ Anaconda | The World's Most Popular Data Science Platfor..