All Articles

TIL&TEL 21.11.01~21.11.07

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 금

  • 로그인 관련
  • 코드 읽어보기

    1. 불필요한것들 제거하기

      • 안쓰는 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() 등의 코드만 들어가 있는것이 깔끔
    2. 필요한것 더하기

      • 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 the get_serializer_class() method

    • SITUATION: GenericViewSet 사용 method not allowed rendering
    • HOWTOSOLVE:

        1. Request 처리과정 Debugging
        2. Serializer class 호출 확인
        1. Serializer 호출을 하는 Class 확인
        1. Serializer 호출 Class determine 하는 부분 확인
        1. 해당 내용 확인후 Serialzer 제거
    • REASON:

      • 왜 html renderer 를 찾는가?

        • it determines by request header : Accept
      • rendering 과정에서 serializer class를 찾는다.
    • SOLUTION:

      • del default Render with Browsable API