분류 전체보기

Python

파이썬 클래스와 self 설명

파이썬 클래스를 사용하다보면 self라는 인자를 보게 됩니다. 특별히 메소드(클래스 내에서 정의된 함수)를 사용할 때 첫 번째 인자로 self가 들어가 있는 것을 볼 수 있는데요. 이는 무엇이며 어떤 원리로 작동하는 것일까요? 먼저, 클래스에 대해 간략히 살펴보겠습니다. 클래스는 앞으로 생성할 인스턴스들의 청사진이라고 할 수 있습니다. 즉, 클래스를 사용하면 동일한 기능을 포함한 여러 인스턴스를 생성할 수 있습니다. 그렇다면 self란 무엇일까요? self는 클래스를 통해 구현된 각 인스턴스를 가리킵니다. 예를 들어 살펴보겠습니다. 다음과 같이 Cat 클래스가 있다고 해보겠습니다. class Cat: def __init__(self, name, age): self.name = name self.age =..

Django

장고 추상 모델 클래스 생성과 상속 방법

장고 모델에서 추상 모델 클래스(Abstract 속성)을 사용하면, 다른 클래스 모델에서 이를 상속받아 활용할 수 있습니다. 추상 모델 클래스는 자체적인 데이터베이스 테이블을 생성하지 않으며, 상속받는 클래스의 테이블에 함께 추가됩니다. 추상 모델 클래스 생성 추상 모델 클래스는 데이터베이스의 생성 시각이나 수정 시각과 같이 여러 테이블에서 공통적으로 사용되는 내용을 상속시키고자 할 때 유용할 수 있습니다. 다음과 같이 Base 모델을 만들어 추상 모델 클래스로 지정할 수 있습니다. from django.db import models class Base(models.Model): created_at = models.DateTimeField(auto_now_add=True) updated_at = mode..

TIL

장고 타임 존 설정하기: 한국 시각 설정 - TIL 9

장고에서는 settings.py에서 타임 존을 설정할 수 있습니다. 기본값은 다음과 같이 세계표준협정시 UTC를 기준으로 설정되어 있습니다. # settings.py TIME_ZONE = 'UTC' USE_I18N = True USE_TZ = True 이를 다음과 같이 변경하면 한국 시각(UTC+9)으로 타임 존을 설정할 수 있습니다. # settings.py TIME_ZONE = 'Asia/Seoul' USE_I18N = True USE_TZ = False

TIL

HTTP 요청 GET POST 차이점 정리 - TIL 8

HTTP 요청에는 GET과 POST이 존재합니다. 이는 HTTP 프로토콜을 통해 클라이언트에서 서버로 요청을 전송하는 두 가지 다른 방법입니다. GET POST 헤더에 데이터를 담아 보내기 때문에 제한적인 데이터만 전송 가능(255자) 바디에 데이터를 담아 보내기 때문에 큰 데이터를 전송할 수 있음(제한 없음) 전송하는 데이터가 URL에 노출됨 전송하는 데이터가 BODY에 담김 결과를 북마크에 저장할 수 있음 결과를 북마크에 저장할 수는 없음 스트링 데이터만 전송 가능 스트링, 숫자 등 전송 가능 파라미터가 웹 브라우저 히스토리에 남아 있음 파라미터가 웹 브라우저 히스토리에 남아 있지 않음 POST 요청에 비해 빠름 GET 요청에 비해 느림 주된 차이점은 GET은 URL에 요청 파라미터를 추가하며, 변경..

Django

장고 암호화 인증 인가 처리: bcrypt, JWT 사용 방법

인증(authentication)이란 클라이언트가 사용자의 아이디와 비밀번호 등을 확인하여 요청을 진행하는 대상을 검증 및 보호하는 것입니다. 인가(authorization)란 해당 인증을 마친 사용자에게 특정한 권한을 부여하는 것입니다. 예를 들어, 웹사이트에 로그인하는 것은 인증이고, 이를 통해 댓글을 작성할 수 있게 되는 것은 인가에 해당합니다. 인증: bcrypt 설치 및 암호화, 검증 방법 bcrypt는 암호를 해싱해주는 라이브러리입니다. 입력된 값을 단방향 해싱하기 때문에 복호화는 불가능합니다. bcrypt를 설치합니다. pip install bcrypt 파이썬 인터프리터 실행 후 임포트를 진행합니다. import bcrypt 암호화를 진행하려면 hashpw 메소드를 사용합니다. bcrypt를..

TIL

장고 모델에서 Q () 연산자 (or) 사용하는 방법 - TIL 7

장고에서는 기본적으로 and 연산자 방식으로 필터링(filter)을 진행합니다. 다음과 같은 경우에는 name & rating을 모두 만족하는 쿼리셋을 찾는 것입니다. Book.objects.filter(name='Python Book', rating=5) Q() 연산자는 논리 연산자 or에 해당하며 다음과 같이 활용할 수 있습니다. from django.db.models import Q Books.objects.filter(Q(name='Python Book' | Q(rating>3)) 이렇게하면 데이터베이스에서 name 또는 rating 조건중 하나를 만족하는 데이터를 필터링할 수 있습니다. eixsts() 를 사용하면 데이터베이스에서 존재 유무를 확인할 수도 있습니다. 이 경우 True 또는 Fal..

Django

장고 HTTP 리퀘스트 유효성 검사 및 에러 메시지 작성 방법

HTTP를 통한 장고 CRUD 작업 시 요청에 따른 데이터의 유효성을 검사할 수 있습니다. 유효성을 검사하려는 별도의 validators.py를 만들어서 활용할 수도 있고, views.py에서 바로 작업할 수도 있습니다. 오류가 발생하면 Validation 등 해당하는 raise하여 적절한 응답과 상태를 전달할 수 있습니다. POST 요청 데이터 유효성 검사 이전 포스팅에서 모델을 작성하며 이메일과 같은 데이터의 중복 방지를 막기 위해unique=True 속성을 사용했었는데요. 이렇게 하면 기존에 존재하는 데이터 값과 동일한 값이 사용자로부터 전달될 경우 IntegrityError가 발생합니다. 이것이 오류 검사를 진행해야 할 첫번 째 경우입니다. 두 번째 경우는 이러한 중복 뿐만 아니라 사용자가 입력하..

TIL

파이썬 이메일, 비밀번호, URL 유효성 검사 정규 표현식 - TIL 6

이메일 유효성 검사: @, . 순서와 포함 여부 import re def is_email_valid(email): REGEX_EMAIL = '([A-Za-z0-9]+[.-_])*[A-Za-z0-9]+@[A-Za-z0-9-]+(\.[A-Z|a-z]{2,})+' if not re.fullmatch(REGEX_EMAIL, email): return "이메일 형식을 확인하세요." 비밀번호 유효성 검사: 8자리 이상, 1개 이상의 소문자, 대문자, 숫자, 특수문자 포함 여부 def is_password_valid(password): REGEX_PASSWORD = '^(?=.*[\d])(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*()])[\w\d!@#$%^&*()]{8,}$' if not re...

TIL

장고 db_table 이름 지정과 활용 방법 - TIL 5

db_table을 통해 모델에서 생성한 데이터베이스 테이블의 이름을 변경할 수 있습니다. db_table = 'bookstore' db_table 자동 생성과 변경 장고는 앱과 모델 클래스의 이름을 조합하여 데이터베이스 테이블의 이름을 자동으로 생성합니다. 보다 정확하게는 모델의 데이터베이스 테이블 이름은 모델의 "앱 라벨"(python manage.py startapp bookstore에서 bookstore)과 모델의 클래스 이름을 언더스코어로 조합하여 지정됩니다. 예를 들어, bookstore 라는 앱을 생성했고, class Book을 모델에서 정의했다고 해보겠습니다. 이 경우 데이터베이스 테이블 이름은 bookstore_book이 됩니다. 이를 다른 이름으로 변경하려면 class Meta 내에서 d..

Python

파이썬 패키지 정리

파이썬 패키지란 여러 파이썬 모듈(파일)들을 모아 놓은 것으로, 보통 하나의 _init_.py 를 포함한 폴더로 구성됩니다. 패키지 사용 방법 사용자가 특정 패키지를 설치하지 않더라도 파이썬에서 기본적으로 제공하는 패키지들이 있습니다. 그 중에서도 math 패키지를 사용하려면 다음과 같이 불러올 수 있습니다. import math 만약 패키지를 설치했거나 불러오는데 찾을 수 없다는 오류가 발생 한다면 sys.path에 해당 경로를 추가해줘야 합니다. math 패키지를 불러왔다면 이제 다음과 같이 닷 노테이션을 통해 이를 사용할 수 있습니다. import math print(math.factorial(3)) # 6 패키지 내 특정 함수만을 불러올 수도 있습니다. from math import factori..

휘 Hwi
'분류 전체보기' 카테고리의 글 목록 (4 Page)