Python에서 @property 데코레이터는 메서드를 클래스의 속성처럼 접근할 수 있게 해줍니다. 이를 사용하면, 메서드를 호출하는 것처럼 보이지 않고 속성에 접근하는 것처럼 코드를 작성할 수 있습니다. 이러한 방식은 파이썬스러운(pythonic) 방식으로 디자인할 수 있도록 한다고 합니다. 예제 예를 들어, 다음과 같은 클래스를 정의합니다. class Circle: def __init__(self, radius): self._radius = radius @property def radius(self): return self._radius @property def diameter(self): return self._radius * 2 def area(self): return 3.14 * self._ra..
장고(Django)에서 순환 종속성(circular dependency)은 서로가 서로를 의존하는 모듈 또는 패키지 간의 관계를 말합니다. 이는 코드 구조에서 일반적으로 문제가 될 수 있는 상황입니다. 장고 프로젝트는 여러 개의 앱으로 구성될 수 있습니다. 각 앱은 모델, 뷰, 템플릿 등의 구성 요소를 포함하고 있습니다. 종종, 한 앱이 다른 앱의 모델이나 뷰를 참조해야 할 때 순환 종속성 문제가 발생할 수 있습니다. 예를 들어, 앱 A가 앱 B의 모델을 참조하고 앱 B가 앱 A의 모델을 참조한다고 가정해 봅시다. 이 경우, 앱 A를 실행하려면 앱 B의 모델이 필요하고 앱 B를 실행하려면 앱 A의 모델이 필요합니다. 따라서 어느 앱을 먼저 로드해야 할지 결정할 수 없습니다. 이는 순환 종속성이 발생한 상..
장고에서는 Foreign Key (외래 키) 관계를 설정하는 방법으로 크게 세 가지가 있습니다. 1. 일대다 (One-to-Many) 관계 일대다 관계에서는 한 모델이 다른 모델의 여러 인스턴스와 연결될 수 있지만, 두 번째 모델(Book)의 인스턴스는 첫 번째 모델(Author)의 한 인스턴스에만 연결됩니다. 일대다 관계를 설정하기 위해 ForeignKey 필드를 사용할 수 있습니다. 예시: class Author(models.Model): name = models.CharField(max_length=100) class Book(models.Model): author = models.ForeignKey(Author, on_delete=models.CASCADE) title = models.CharFi..
reverse와 reverse_lazy 차이 reverse reverse 메소드는 주어진 뷰에 대한 URL을 생성하는데 사용됩니다. 이 메서드는 URL 패턴의 이름과 뷰에 전달해야하는 인수를 받고 URL을 나타내는 문자열을 반환합니다. 이 함수는 호출되는 즉시 평가(evaluated)됩니다. 즉, URL을 즉시 생성합니다. reverse는 즉시 평가되기 때문에 아직 로드되지 않을 수 있는 URL 구성(configurations)(예: Django의 URL 구성에 의존하는 클래스 기반 뷰의 속성을 정의할 때)에는 사용해서는 안됩니다. reverse_lazy 반면에 reverse_lazy는 reverse와 동일한 작업을 수행하지만 더 느립니다. 즉, 명시적으로 액세스(explicitly accessed)할 ..
요구 정책 8자리 이상 영문, 숫자, 특수문자 포함 구현 방식 DRF가 아닌 Pure Django에서 구현했습니다. validators.py에 원하는 검사를 구현하고, forms.py에 validator를 추가했습니다. 구현 settings.py AUTH_PASSWORD_VALIDATORS = [ { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', }, { 'NAME': 'django.c..
glob.glob() 함수는 파라미터로 받은 패턴과 이름이 일치하는 모든 파일과 디렉터리를 리스트로 반환합니다. import glob glob.glob(pattern) 파라미터인 pattern에는 아래와 같은 특수문자가 포함될 수 있습니다. * : 0개 이상의 임의 개수의 문자와 일치합니다. 그래서 glob.glob(*) 이 경우는 모든 파일과 디렉터리를 볼 수 있습니다. ? : 정확히 하나의 문자와 일치합니다. [] : 괄호 안의 단일 문자와 일치합니다. [!] 또는 [^] : 대괄호 안에 없는 단일 문자와 일치합니다. {} : 중괄호 안의 쉼표로 구분된 패턴과 일치합니다. . : 리터럴 점(.)과 일치합니다. 예시 import glob # 1) 현재 디렉터리에 있는 모든 파일과 디렉터리 files =..