T.I.L (Today_I_Learned)(54)
-
T.I.L July 06, 2023 - [DRF]간단한 계정 찾기(계정 재활성화)로직 구현
탈퇴(계정 비활성화)인 유저가 탈퇴 계정으로 로그인을 시도할 때 코드 class CustomTokenObtainPairView(TokenObtainPairView): permission_classes = [AllowAny] serializer_class = CustomTokenObtainPairSerializer def post(self, request): user = User.objects.get(email=request.data['email']) is_withdrawal=user.withdrawal if is_withdrawal == True: user.withdrawal = False user.is_active = True user.save() return Response({"withdrawal_t..
2023.07.07 -
T.I.L July 03, 2023 - [DRF] JWT refresh 토큰 쿠키에 저장하고 활용하는 로직 구성 중 발생한 트러블
TokenRefreshView의 403Forbidden error refresh 토큰을 쿠키에 저장하여 관리하는 작업을 진행하던 도중 발생한 문제 refresh 토큰을 쿠키에 저장 access 토큰이 만료되는 시점에 쿠키에 저장된 refresh 토큰을 사용 access 토큰 재발급 및 local storage에 저장 2번 과정을 진행하기 위해 simple JWT의 TokenRefreshView를 사용하였음 여기에서 permission_classes = [IsAuthenticated]로 설정하고 진행하자 403Forbidden error가 발생 문제1 최초 구상한 로직에 허점을 발견 최초 구상한 로직은 access 토큰의 만료 시간이 지나기 전에 사용자가 로그인이 된 상태(아직은 access 토큰의 인증 ..
2023.07.03 -
T.I.L June 26, 2023 (최종 프로젝트 중간 발표 후 KPT 회고)
Keep 현재 만족하고 계속 유지했으면 하는 것 Git flow 협업방식 Git issues를 활용한 업무 분배 커밋 메시지 템플릿 활용 doc string 활용 코드 피드백(코드 리뷰??) Problem 개선이 필요하다고 생각되는 부분 프로그래밍을 할 때 로직에 대한 계획이 빈약함(고민의 깊이가 얕음) - 개인적인 부족함 아직까지 django에 대한 이해도가 조금 부족함 - 개인적인 부족함 Try Problem에 대한 해결책 팀원들의 프로젝트 진행 방식을 보며 로직을 구성할 때 어떻게 계획하는지 배우기 django doc를 읽어보며 다시 정리해보기
2023.06.26 -
T.I.L June 19, 2023 - Git soft reset
최근 커밋을 하고나니 불필요한 코드가 남아있는 경우가 점점 눈에 보여서 커밋을 되돌리고 싶은 경우가 많아졌습니다. 그래서 팀원분의 도움과 검색을 통해 soft reset 을 사용하게 되었습니다. git reset git reset 은 hard, mixed, soft 의 3가지 옵션이 있습니다. 3가지 옵션들은 각자 차이가 있지만 아직은 soft에 대해서만 익숙하기 때문에 soft를 기록하겠습니다. 먼저 커밋 로그를 확인하기 위해 아래의 명령어를 사용합니다. git log --oneline 커밋의 로그를 확인해준 다음 아래의 명령어를 입력하여 해당 커밋으로 돌아갑니다. git reset --soft 이렇게 soft reset을 통해 커밋을 되돌린 경우에는 작업중이던 woring directory와 stag..
2023.06.19 -
T.I.L June 14, 2023 (DRF 프로젝트에 logging 적용)
Logging(로깅) 로깅은 프로그램 실행 중에 발생하는 이벤트 및 메시지를 기록하는 것 입니다. 기록된 정보는 나중에 분석, 디버깅, 성능 평가 등을 위해 사용될 수 있습니다. 프로젝트에 적용한 logging code LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'verbose': { 'format': '{asctime} {levelname} {module} {message}', 'datefmt': '%Y-%m-%d %H:%M', 'style': '{', }, }, 'handlers': { 'console': { 'level': 'INFO', 'class': 'logging.StreamHandler', 'for..
2023.06.14 -
T.I.L June 13, 2023 (DB 개발/배포 환경에 따라 자동 설정)
프로젝트 환경 DRF(Django Rest Framework) sqlite3 MYSQL .env 코드 DATABASES = { 'dev': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': BASE_DIR / 'db.sqlite3', }, 'production': { 'NAME': os.environ.get('MYSQL_NAME'), 'ENGINE': 'django.db.backends.mysql', 'USER': os.environ.get('MYSQL_USER'), 'HOST': os.environ.get('MYSQL_HOST'), 'PASSWORD': os.environ.get('MYSQL_PASSWORD'), 'PORT': os.environ.get('MYSQ..
2023.06.13