코딩한걸음
article thumbnail
[Python] 문자열 포매팅: % 연산자, str.format(), f-strings 성능 비교
Python 2024. 2. 5. 09:00

개요 python의 문자열 포매팅 방법에는 3가지가 있다. 각각의 사용법과 차이를 알아본다. % Operator Python의 초기 버전에서 사용되던 전통적인 방식입니다. 자료형 별로 특정 문자를 사용해 지정해준다. 자료형 문자 입력 자료형 정수 %d int, float 실수 %f int, float 문자열 %s str, int, float 8진수 %o int 16진수 %x int % %% operator = "%s is %d years old" % (name, age) str.format() method Python 2.6 이상에서 도입된 보다 현대적이고 유연한 방식입니다. 이 방식은 중괄호 **{}**를 플레이스홀더로 사용하며, format() 메소드를 통해 값을 주입합니다. str_format = ..

article thumbnail
[Django] inspectdb
Python/Django 2024. 1. 25. 09:00

개요 inspectdb 명령어는 기존의 데이터베이스 테이블을 Django 모델 코드로 변환하는 데 사용 데이터베이스 스키마를 자동으로 분석하여 Django 모델 클래스로 변환하는 코드를 생성 사용방법 $ python manage.py inspectdb 연결된 데이터베이스의 모든 테이블에 대한 Django 모델 클래스를 출력한다. 출력된 코드는 위처럼 콘솔에 나타나며, 이를 복사하여 models.py 에 붙여넣으면 된다. 옵션 -database : 사용할 데이터베이스를 지정. 는 settings.py에 정의된 데이터베이스의 이름이다. -include-partitions: 파티션된 테이블을 포함합니다. -include-views: 데이터베이스 뷰를 포함합니다. : 특정 테이블에 대해서만 모델을 생성하려는 경..

[Python] Pydantic
Python 2024. 1. 19. 09:00

Pydantic latest : v2.5.3 dependency : python 3.7 + installation $ pip install pydantic # poetry $ poetry add pydantic $ poetry install $ poetry export -f requirements.txt --output requirements.txt optional dependencies : github pip install pydantic[email] # or pip install email-validator 주요 기능 BaseModel 입력을 받아 데이터 형식과 제약조건을 보장 example from datetime import datetime from pydantic import BaseModel,..

[Python] method type
Python 2024. 1. 18. 09:00

Python method type 파이썬에서는 메서드를 세 가지 타입으로 분류한다. 인스턴스 메서드(instance methods) 클래스 메서드(class methods) 정적 메서드(static methods) 인스턴스 메서드 (Instance methods) 인스턴스(객체)에 대한 메서드 첫 번째 파라미터로 `self`를 사용하여, 인스턴스 자신을 참조합니다. 해당 인스턴스의 속성(데이터)과 다른 메서드에 접근할 수 있음 일반적으로 클래스 정의의 기본 메서드 타입 클래스 메서드 (Class methods) 클래스 자체에 대해 작동 `@classmethod` 데코레이터로 정의되며, 첫 번째 파라미터로 `cls`를 사용하여 클래스 자체를 참조 인스턴스 속성이 아닌 클래스 속성(클래스 변수)에 접근하고 ..

[Python] pyenv 설치 및 세팅 (for mac)
Python 2024. 1. 10. 08:00

이 글은 mac을 기준으로 작성 되었습니다. pyenv ? 프로젝트 별로 python 버전이 다른 경우 쉽게 스위칭하기 위해 사용 pyenv 설치 $ brew install pyenv 환경 변수 설정 (for zsh) $ export PYENV_ROOT="$HOME/.pyenv" $ export PATH="$PYENV_ROOT/bin:$PATH" $ eval "$(pyenv init --path)" $ eval "$(pyenv init -)" 설정 후 동작 확인 $ pyenv --version >> pyenv 2.3.35 pyenv에 python 설치 # 설치 가능한 Python 버전 확인 $ pyenv install --list # 특정 버전 python 설치 $ pyenv install 3.8.x $..

article thumbnail
[Django 50문 50답] RESTful API는 무엇을 의미합니까?
Python/Django 2023. 11. 4. 08:00

Q. RESTful API는 무엇을 의미합니까? REST는 REpresentational State Transfer의 약자로, 웹 기반의 시스템에서 컴포넌트 사이의 데이터 전송을 위한 아키텍처 스타일입니다. 이 아키텍처는 자원(resource)의 표현(representation)을 통해 상태 정보를 주고 받는 것을 기본으로 합니다. 자원은 URI로 식별되며, 그 상태는 JSON, XML 등의 형태로 전달됩니다. REST의 특징은 Server-Client, Stateless, Cacheable, Layered System,Uniform Interface, Self-Descriptiveness입니다. REST API는 이러한 원칙을 따르는 API를 구현한 것이며, RESTful API는 REST 원칙들을 최..

article thumbnail
[Django 50문 50답] JWT의 Access Token과 Refresh Token은 왜 필요한가요?
Python/Django 2023. 11. 3. 18:25

Q. JWT의 Access Token과 Refresh Token은 왜 필요한가요? Access Token은 사용자가 인증을 마친 후 서비스 내의 리소스에 접근할 수 있는 권한을 부여하기 위해 사용됩니다. 이 토큰은 짧은 유효 시간을 가지고 있으며, 이는 만약 토큰이 탈취되더라도 제한된 시간 동안만 유효하다는 의미 입니다. 따라서 보안 리스크를 최소화할 수 있습니다. Refresh Token은 유효기간이 만료된 Access Token을 새로 발급받기 위해 사용됩니다. Refresh Token은 상대적으로 긴 수명을 가지고 있고 Access Token보다 더 안전하게 저장되어야 합니다. 사용자가 매번 로그인하여 새로운 Access Token을 받는 번거로움 없이, 안전하게 서비스를 이용할 수 있도록 합니다...

article thumbnail
[Django 50문 50답] JWT에 대해서 설명하시오
Python/Django 2023. 11. 3. 14:20

Q. JWT에 대해서 설명하시오 JWT는 JSON Web Token의 약자로 JSON을 이용해 정보를 안전하게 다루기 위한 개방형 표준입니다. JWT는 크게 헤더(Header), 내용(Payload), 서명(Signature)으로 나뉘어지며 `.`으로 각 부분을 구분합니다. 각 부분은 전부 Base64 URL-safe Encode로 인코딩되어 사용됩니다. JWT는 자체적으로 필요한 정보를 담고 있어서, 인증 정보를 매 요청마다 서버에 저장할 필요가 없어서 상태를 유지하지 않는(stateless) RESTful API에 적합합니다. 또한, 여러 다른 플랫폼과 도메인 간에도 사용할 수 있어 확장성이 높습니다. 하지만 보안 측면에서는 몇 가지 주의할 점이 있습니다. 암호화되지 않은 JWT는 Payload의 내..