TIL40 | Westargram 마무리

2021. 11. 1. 10:29프로그래밍/웹관련

반응형

오늘 할 일 TODO

프로젝트 시작 전 정리 할 것

  • Git commit & PR convention
  • parameter & table naming
  • README.md 타이틀 작성
  • logging 설정
  • Modeling할 때 PK (unique=True)
  • fake library 사용법

🎠️ Django Design Pattern

URLconf (Router)

Main urls.py

app으로 라우팅 해주는 역할

Sub user/urls.py

target 값을 지정

View class 소스 분석

notion 자료 보기

Model

abstract model

  • 반복적인 시간 기록 요소를 작성해야하는 경우, 추상화된 class를 만들고 상속을 받아서 구현한다.
class TimeStampModel(models.Model):
    created_at = models.DateTimeField(auto_now_add = True)
    updated_at = models.DateTimeField(auto_now = True)

    class Meta:
        abstract = True

class User(TimeStampModel):
    ...

logging

Django SQL query가 어떻게 이뤄지는지 알고 싶을 때 로깅하는 방법

(로컬 개발환경에서는 거의 필수적으로 사용한다.)

  1. 서버 실행시 코드 실행 때마다 쿼리가 찍히는 설정

    settings.py에 LOGGING 설정 추가
  2. 파일로 저장하는 방법

    settings.py에 LOGGING 설정에 파일관련 설정 추가

🎠️ Mission 1-6

settings.py

⭐️ CORS_ALLOW_METHODSOPSTIONS 역할

  • preflight 개념 설명 할 수 있어야함. (기술면접)

Modeling

  • Key 컬럼에는 unique=True 옵션을 반드시 줘야한다.

  • 복합 Key인 경우에는 unique together 제약조건을 설정하면 된다.

회원가입

정규 표현식

: 정규표현식을 사용할 경우, 자주 사용되는 경우가 아니라면 compile() 을 사용하는 것보다 match()를 사용하는 것을 공식문서에서 추천하고 있다.
(compile()은 한번 컴파일하고 여러번 사용할 때 쓰는 것.)

정규 표현식 리팩토링

import re
from django.core.exceptions import ValidationError

REGEX_EMAIL    = '^[a-zA-Z0-9+-_.]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$'
REGEX_PASSWORD = '^(?=.*[a-zA-Z])(?=.*[!@#$%^~*+=-])(?=.*[0-9]).{8,20}'

# if 문
def validate_email(value):
    if not re.match(REGEX_EMAIL, value)
        raise ValidationError('INVALID_EMAIL_ADDRESS')

# try-except문 (가독성이 더 좋음. 권장)
def validate_password(value):
    try:
        regex = re.match(REGEX_PASSWORD, value)
    except ValidationError:
        return ...

⭐️ Exception 처리

반응형