본문 바로가기

기타/개발일지

[2022-06-20] 개발일지

반응형


1. Project

TourApp Project ( Backend - DRF )


2. Process

Social Sign in / Sign up(Social Login)기능


3. Issue

1) Docker 컨테이너 및 이미지 삭제 필요

2) Django Model 설계시 blank, null 에 대해서 정립할 필요

3) Social Login 기능 중 상황별 맞춤 기능 개발 필요

4) Login 기능 개발 중 "User has no attribute objects" 오류 발생


4. Today Study Contents

1) Docker 명령어

(1) 컨테이너 삭제

(1-1) 동작 중인 컨테이너 확인
$ docker ps

(1-2) 정지된 컨테이너 확인
$ docker ps -a

(1-3) 컨테이너 삭제 ( 복수개도 가능 )
$ docker rm [Container ID or Names]

(1-4) 컨테이너 모두 삭제
$ docker rm `docker ps -a -q`

(2) 이미지 삭제

(2-1) 현재 이미지 확인
$ docker images

(2-2) 이미지 삭제
$ docker rmi [Image ID]

(2-3) 이미지 강제삭제(컨테이너 포함)
$ docker rmi -f [Image ID]

2) 다시 한번 정리하는 null=True / blank=True

Django Model 에서 null 과 blank 의 기본값은 False

(1) null = True 설정
null 을 True 로 설정하면 데이터베이스에 NULL 값이 들어갈 수 있다.

(2) blank = True 설정
blank 를 True 로 설정하면 form에서 빈 값을 받을 수 있다. 이때 데이터베이스에는 문자열 ''(공백)이 저장된다.

(3) null = True , blank = True 로 설정하는 경우
어떤 조건으로든 값을 비워둘 수 있음을 의미

Null ( Database-related ) : 데이터베이스 컬럼이 null 값을 가질 것인지 아닌지를 정의
Blank ( Validation-related ) : form.is_valid()가 호출될 때 폼 유효성 검사에 사용

*CharField , TextField 와 같이 문자열 기반 필드에는 null 을 True로 정의하면 안된다. Null이 아닌 빈 문자열을 사요하는 것이 장고 컨벤션

3) Social Login 기능

Naver Login 을 위한 기능 중 일부를 개발했다.

(1) Naver 의 Login API 에 대해 이해했다.

(2) Naver 에 정보를 요청한 후의 Process에 대해서 이해가 더 요구된다.

    (2-1) User 모델에 동일한 email 이 존재하지 않는 경우 회원가입
        - 회원가입을 만드는 과정 중에서 입력받은 정보를 DB에 입력하는 곳에서 문제가 발생했다.
        - 정상적으로 데이터들을 받아오지 못하는 상황
        - birth 필드의 경우 문자열 데이터를 Date 형태로 바꾸어야 한다.
        - gender, phone_number, birth 등 custom 하면서 생긴 Field 들을 입력해주기 위한 Serializer, Adapter를 추가

    (2-2) User 모델에 동일한 email 이 존재하는 경우 로그인
        - Kakao Login 과 관련해서 인증 절차를 거쳐야 할 필요가 있다.
        - 이 부분은 핸드폰 인증을 통해서 해결하도록 해보자.

4) "User has no attribute objects" 오류 발생

User 모델의 object 를 검색하는 과정에서 발생한 오류이다. 한번도 이런 오류가 발생한 적이 없어서 어떤 이유인가 고민했다. 이것 저것 디버깅하면서 원인을 찾아보았는데 도무지 어디서 문제가 생긴건지 알 수 없었다.

결국 고민 끝에 해당 오류에 대해 구글링을 해보았는데... 처음 본 Stackoverflow의 글에서 그 답을 찾을 수 있었다....

해당 오류는 AbstractBaseUser 를 상속받아 User 모델을 커스텀하는 과정에서 오타로 인해 발생했다. 이 오류를 찾으려고 30분 내내 고생을 했는데.. 황당하게도 오타라니.. 역시는 역시인가보다..

오류가 있었던 부분은 User 모델을 작성하는 과정에서 object = UserManager() 부분을 objct = UserManager() 로 치면서 발생했다.

이 부분을 수정해주니 정상적으로 작동해 다음 과정으로 나아갈 수 있었다.

5. Reference

3) Social Login 기능

네이버 로그인 개발 가이드

 

네이버 로그인 개발가이드 - LOGIN

네이버 로그인 개발가이드 1. 개요 4,200만 네이버 회원을 여러분의 사용자로! 네이버 회원이라면, 여러분의 사이트를 간편하게 이용할 수 있습니다. 전 국민 모두가 가지고 있는 네이버 아이디

developers.naver.com

4) "User has no attribute objects" 오류

https://stackoverflow.com/questions/57093628/customuser-has-no-attribute-objects

 

CustomUser has no attribute 'objects'

I am using jwt auth system When I fill the field it returns jwt token easily but if i want to create a profile with this token it says CustomUser has no attribute 'objects' my users/models.py ...

stackoverflow.com

 


6. Plan Study for Tomorrow

1) Social Login 기능을 위한 Custom 모델에 대한 Serializer , Adapter 개발

2) Social Login 기능 중 User 모델에 해당 email 이 존재하지 않는 경우 회원가입 기능 개발

3) Social Login 기능 중 User 모델에 해당 email 이 존재하는 경우 로그인 기능 개발


 

반응형

'기타 > 개발일지' 카테고리의 다른 글

[맥OS] Mac OS 단축키 및 Xcode 단축키  (0) 2022.11.01
[2022-06-29] 개발일지  (0) 2022.06.29
[2022-06-28] 개발일지  (0) 2022.06.28
[2022-06-23] 개발일지  (0) 2022.06.27
[2022-06-22] 개발일지  (0) 2022.06.23