[django] 1st project review (modeling)
🖥 1차 프로젝트 진행하면서 받은 피드백 정리
- 1차 프로젝트: fruitz_company
- scope: modeling
1
decorator의 inner function 인자 설정
decorator를 작성할 때, inner function의 인자로 self
, request
, *args
, **kwargs
4가지를 default처럼 넣어왔다.
-> why: 확장성 고려 (예를 들어 login_decorator
에서 비회원을 추가로 처리할 때)
-> 하지만 지금의 경우는 애초에 추가 인자가 들어갈 일이 없기 때문에 self
, request
까지 넣는 것이 더 좋은 상황.
2
암호화한 비밀번호를 decode해서 db에 넣는 이유
bytes로 변환된 비밀번호는 b'...'
로 포장된다.
그런데 이를 decode처리(즉, str형태로 바꾸고 겉에 씌여진 b'...'
를 제거)하는 이유는 checkpw
작업을 위해서다.
-> decode 처리하지 않으면, b'...'
까지 포함해서 str로 저장됨
-> 이 상태에서 checkpw(encode)를 하면 Error:Invalid salt
가 뜸
3
About 컨벤션
: 함수는 동사 형태로 (password_validator
> validate_password
)
: 클래스명은 camelcase로 (Order_item
> OrderItem
)
: 변수명은 더 명확하게 (check_password
> is_checked
)
: 띄어쓰기 check (변수 - 조건문 사이도 한 줄 띄워주기)
: empty line 제거하기
4
django 각 모듈의 역할은 철저하게 seperated상태여야 한다
views가 하는 역할을 models나 다른 모듈에서 하면 바람직하지 않다.
예를 들어, error를 return할 때 작성된 코드는 아래와 같다.
#validator.py
from .views import ValidationError
REGEX_PASSWORD = '^(?=.*[A-Za-z])(?=.*\d)(?=.*[@$!%*#?&])[A-Za-z\d@$!%*#?&]{8,}$'
def validate_password(password):
if not re.match(REGEX_PASSWORD, password):
raise ValidationError('INVALID_PASSWORD')
#views.py
class SignUpView(View):
def post(self, request):
try:
data = json.loads(request.body)
user = data['user']
password = data['password']
validate_password(password)
...
...
return JsonResponse({'message':'SUCCESS'}, status=201)
except KeyError:
return JsonResponse({'message':'KEY_ERROR'}, status=400)
except ValidationError as e:
return JsonResponse({'message':e.message}, status=400)
validator.py에서, 사용자가 입력한 비밀번호가 양식에 맞지 않는 경우 (숫자/문자/특수문자 조합 8자리 이상) ValidationError
를 raise한다.
하지만 에러 메세지+status code를 직접 return하지 않으며, 이는 views.py에서 반환하도록 설정했다.
(validate_password
실행 > 규격에 맞지 않을 시, ValidationError
를 raise(메세지: "INVALID_PASSWORD") > 이를 읽은 views.py는 e
라는 변수에 ValidationError
를 담아 메세지와 함께 status code 반환)
에러 메세지+status code를 return하는 것은 views.py가 담당한다.
따라서, views.py 외의 파일에 작성하면 옳지 못한 코드인 셈.
Author And Source
이 문제에 관하여([django] 1st project review (modeling)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@mquat/django-1차-프로젝트저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)