파비의 매일매일 공부기록

Two Scoops of Django - #29장 본문

Study/Python

Two Scoops of Django - #29장

fabichoi 2021. 6. 30. 23:30

이번장은 유틸리티에 대한 내용이다.

딱히 끌리는 내용은 없을 듯한데, 그래도 필요한 내용들은 정리할 예정이다.

 

1. 유틸리티들을 위한 코어 앱 만들기 : 프로젝트 전반에 걸쳐 쓰이는 함수들과 객체들을 넣어 두는 코어 장고 앱을 이용해 유틸리티들을 보관할 것

 

2. 유틸리티 모듈들을 이용해서 앱을 최적화

 - 여러 곳에서 공통으로 쓰이는 코드 저장하기

 - 모델을 좀 더 간결하게 만들기

 - 좀 더 손쉬운 테스팅 가능

 

3. 장고 자체에 내장된 스위스 군용 칼 : 장고의 다수의 유용한 헬퍼 함수를 django.utils에 내장

 - django.contrib.humanize : 좀 더 인간 친화적인 기능 제공

 - django.utils.decorators.method_decorator(decorator) : 데코레이터

 - django.utils.decorators.decorator_from_middleware(middleware) : 미들웨어

 - django.utils.encoding.force_text(value) : python3의 str혹은 python2의 unicode형태로 변환

 - django.utils.functional.cached_property : 메서드의 결과를 프로퍼티로 메모리에 캐시

 - django.utils.html.format_html : str.format()과 유사

 - django.utils.html.remove_tags(value, tags) : 보안상의 이유로 더 이상 지원 안 함

 - django.utils.html.strip_tags(value) : 사용자가 보낸 데이터 중 HTML 코드 분리 필요시 사용

 - django.utils.six : 요건 나도 씀. 파이썬 2와 3의 호환 라이브러리

 - django.utils.text.slugify(value) : 웬만하면 slugify() 만들지 말 것. 이 함수를 사용 추천

 - django.utils.timezone : 시간대 관련. 요즘 요거 때문에 이슈가 꽤 됨 ㅠㅠ

 - django.utils.translation : 번역 관련 유틸

 

4. 예외 : 대부분 내부적으로 이용하지만 몇 가지는 외부로 노출되어 있음

 - django.core.exceptions.ImproperlyConfigured : 이거 초반에 엄청 많이 봤던 에러. 설정 상의 문제를 알려주는 데 있음. 근데 어디가 문제인지 찾기가 어려웠음

 - django.core.exceptions.ObjectDoesNotExist : 기본 Exception 모듈

 - django.core.exceptions.PermissionDenied : 인증된 사용자가 허가되지 않는 곳에 접속 시도 시 발생. 보안이 매우 중시되는 프로젝트의 컴포넌트들과 민감한 데이터를 조작하는 함수에서 유용하게 사용 가능.

 

5. 직렬화 도구와 역직렬화 도구 : JSON, 파이썬, YAML, XML 데이터를 위한 직렬/역직렬화 도구 제공

 - django.core.serializers.json.DjangoJSONEncoder : 날짜, 시간이나 소수점 데이터 인코딩 시 사용

 - django.core.serializers.pyyaml : YMAL 직렬화시 사용 가능

 - django.core.serializers.xml_serializer : XML 직렬화시 사용

반응형

'Study > Python' 카테고리의 다른 글

Two Scoops of Django - #31장  (0) 2021.07.02
Two Scoops of Django - #30장  (0) 2021.07.01
Two Scoops of Django - #28장  (0) 2021.06.29
Two Scoops of Django - #27장  (0) 2021.06.28
Two Scoops of Django - #26장  (0) 2021.06.27
Comments