TIL( Today I Learned)
21-11-01 월
-
App Auth 열어주기
- application 등록
- logout 이슈.
21-11-02 화
- Sg dev db migration
- 프론트 수정 요청
- postman 문서화 정리
- admin 유저 마이그레이션
21-11-03 수
- 내가만든 api 정상동작확인
21-11-04 목
- 면저 진행
- Jwt Token Parsing
21-11-05 금
- 로그인 관련
-
코드 읽어보기
-
불필요한것들 제거하기
- 안쓰는 import
-
drf default class
- renderer
- authenticate_
- filter_backends
-
Modelviewset 은 아래 method가 다 구현 되어 있음 다 사용하지 않는다면 Mixin을 선택적으로 동작해야함, 의도치 않은 동작을 할 우려가 있음
- retreive
- list
- create
- update
- delete
-
transaction 안에는 db hit 하는 코드
- instance.save()
- instance.set()
- instance.add() 등의 코드만 들어가 있는것이 깔끔
-
필요한것 더하기
-
NO
-
only Exception
- 예상하지 못한 에러가 나면 안됨
-
-
YES
- queryset.prefetchrelated(…).selectrelated(…)
-
-
TEL (Trial and Error Log)
21-11-01
-
ERROR: django.db.migrations.exceptions.InconsistentMigrationHistory: Migration message.0001initial is applied before its dependency gate.0001initial on database ‘message’.
- SITUATION: django makemigration
-
REASON:
- migration 생성 타임을 가지고 비교한다.
-
SOLUTION:
- 순서 깨는 migration 지움
-
ERROR: How to add chmod permissions to file in Git?
- SITUATION: Docker container 내에 파일 생성 안됨
-
REASON: you can set or remove the “executable” flag on any tracked file using update-index sub-command.
- 컨테이너내의 파일들을 생성한 root와 실행자가 달라서 실행을 할 수 없었다
-
SOLUTION:
- git에서는 파일에 755, 644밖에 줄수 없다.
- container 내에서 실행하는 유저로 폴더를 새로 만들고, 해당 폴더에 파일을 집어 넣었다.
-
ERROR: form-data camelcase Parser 동작 잘 안함
-
SITUATION:
- postman을 이용해서 보내는 동작들
-
REASON:
- middleware에서 값을 한번 까고 token변환을 하고 있어서, 그 뒤에 있는 로직에서 전환하는 로직에서 parser를 못타고, 데이터를 고르지 못한다.
- 로그인은 form-data로 보내지만, token 꺼내는 동작이 없어서 동작을 하고 있었다
-
SOLUTION:
- middleware 제거하고 view단으로 인증을 내리거나, 변경하도록한다.
-
21-11-05
-
ERROR: AssertionError: ‘ViewSet’ should either include a
serializer_class
attribute, or override theget_serializer_class()
method- SITUATION: GenericViewSet 사용 method not allowed rendering
-
HOWTOSOLVE:
-
- Request 처리과정 Debugging
- Serializer class 호출 확인
-
- Serializer 호출을 하는 Class 확인
-
- Serializer 호출 Class determine 하는 부분 확인
-
- 해당 내용 확인후 Serialzer 제거
-
-
REASON:
-
왜 html renderer 를 찾는가?
- it determines by request header : Accept
- rendering 과정에서 serializer class를 찾는다.
-
-
SOLUTION:
- del default Render with Browsable API