문제상황 웹에서 GET 메소드로 어떤 값을 넘겨줄때, +나 &가 생략이 되거나 읽지 못하는 문제가 발생했다. 문제이유 쿼리스트링에서 + 기호는 URL을 통해 요청을 보낼 때 공백(space)과 + 기호는 모두 공백(space)으로 치환된다. 이것은 브라우저의 표준 동작이다. 따라서 + 기호가 %2B로 인코딩되는데, 이가 공백으로 인식된다는 것이다. 참고로 공백의 인코딩값은 %20이다. 즉, %2B == %20 이다라는 말이된다.(이상한데..?) 요약하자면, 서버 프레임워크가 사용자가 입력한 특수문자를 치환해버려서 프론트에서 그 특수문자를 보고 싶을때 다른 값이 나와버린다는 것이다. 그 이유는 W3c 표준때문이며... 설명하자면 아래의 2가지 상황일 때, 발생할 수 있다는 것이다. 1. form 속성값이 ..
Python
# 오버 로딩 오버로딩은 하나의 클래스 내에서 같은 이름의 메서드를 여러 개 정의하는 것을 말합니다. 오버로딩을 사용하면 같은 이름의 메서드를 다양한 매개변수 형식이나 개수로 정의할 수 있습니다. 매개변수의 타입, 개수, 순서 등이 다르면 컴파일러는 각각의 오버로딩된 메서드를 구별하고 호출할 수 있게 됩니다. * 오버로딩의 핵심 아이디어는 동일한 이름의 메서드를 사용하여 비슷한 작업을 다루는 다양한 시나리오를 처리하는 것이다. 오버로딩은 코드의 가독성과 재사용성을 높일 수 있지만, 파이썬은 자체적으로 메서드 오버로딩을 지원하지 않기 때문에 기본값 설정, 가변 인자, 키워드 인자 등을 활용하여 비슷하게 사용할 수 있다. 예시) from multipledispatch import dispatch class ..
1. 컴파일과 트랜스파일 차이 요약 : C언어 -> bytecode 는 컴파일, TypeScripit -> JavaScripit 는 트랜스파일 https://firstws.tistory.com/34 2. Syntatic Sugar 문법적 기능은 그대로인데 그것을 읽는 사람이 직관적으로 쉽게 코드를 읽을 수 있게 만든다는 것 https://medium.com/analytics-vidhya/syntactic-sugar-in-python-3e61d1ef2bbf 3. pydantic과 pythonic 이란 "파이써닉"은 파이썬 코드의 가독성과 명확성을 강조하는 프로그래밍 스타일을 의미하고 "파이단틱"은 파이썬의 표현력을 최대한 활용하여 코드를 간결하게 작성하는 것 4. python lambda는 왜 multi ..
class Test(models.Model): house = models.ForeignKey( "house.House", verbose_name="집", on_delete=models.DO_NOTHING, db_constraint=False, db_index=False ) name = models.CharField(max_length=50, verbose_name="이름", null=True) title = models.CharField(max_length=50, verbose_name="제목", null=True) class Meta: verbose_name = "테스트" verbose_name_plural = verbose_name db_table = "test" constraints = [ mode..
review 중에 get_object로 가져오면 자동으로 404 에러를 띄워주니까 404 에러를 raise 하지 말라는 리뷰를 받았다. def get_object(self): """ Returns the object the view is displaying. You may want to override this if you need to provide non-standard queryset lookups. Eg if objects are referenced using multiple keyword arguments in the url conf. """ queryset = self.filter_queryset(self.get_queryset()) # Perform the lookup filtering. l..
파이썬은 인터프리터 언어로, 코드를 실행하기 전에 해당 모듈을 메모리에 적재합니다. import 문은 모듈을 현재 실행 중인 스크립트에 적재하도록 지시하는 역할을 합니다. 그러나 import 문 자체가 모듈의 코드를 실행하는 것은 아닙니다. import sys def app(): a = input() app() 위 코드를 예로 들자면, 파이썬 인터프리터는 모듈을 적재할 때 해당 모듈의 코드를 메모리에 로드하고, 필요한 경우 초기화 코드를 실행한다. 모듈의 코드는 import 문이 실행될 때가 아니라, 해당 모듈의 내용이 실제로 사용되는 시점에 실행된다. import sys def app(): a = sys.stdin.readline() 위 코드를 예로 들어서 다시 설명해보겠다. 즉, import 문은 ..
일반적으로 count를 쓰는 것이 len을 사용하는 것보다 성능적으로 우월하다고 한 것으로 알고 있었다. 근데, 나는 len으로 바꿔달라는 리뷰를 받았다. 왤까 싶어서 검색을 해봤다. len()과 count() 차이 count()와 len()은 둘 다 객체의 개수를 계산하는 데 사용되는 메서드이다. 그러나 성능 측면에서는 약간의 차이가 있다. count() 메서드는 SQL 쿼리를 실행하여 데이터베이스 내에서 개수를 직접 계산한다. 이는 데이터베이스에 대한 추가적인 쿼리를 실행해야 하므로 일부 성능 부하가 발생할 수 있다. 특히 데이터베이스에 많은 레코드가 있는 경우에는 성능 저하가 더 크게 나타날 수 있다. 반면에 len() 함수는 count()와 달리 Python 메모리 상에서 객체의 길이를 계산한다...
코드를 짜는데 OneToOneField 사용을 지양해달라는 피드백을 받았다. 왜 그런지 한번 살펴봤다. Django에서 OneToOneField를 사용하는 것을 지양하는 이유 복잡성: OneToOneField는 서로 강하게 연결된 두 개의 모델 간의 관계를 나타내기 위해 사용됩니다. 그러나 이러한 관계는 데이터베이스에서 조인 연산을 필요로 하기 때문에 쿼리의 복잡성을 증가시킬 수 있습니다. 특히 OneToOneField가 연속적으로 연결되는 경우 쿼리가 더 복잡해질 수 있습니다. 유연성: OneToOneField는 두 개의 모델이 서로 강하게 결합되어 있기 때문에 한 쪽 모델의 수정이 다른 쪽 모델에 영향을 줄 수 있습니다. 이는 데이터 모델의 변경이 어려워지고, 유연성과 확장성이 제한될 수 있다는 것을..