-
[Python] IntegrityError: NOT NULL constraint failed: users_user.usernamePython/Django 2021. 12. 18. 00:12
if username is not None: name = profile_json.get("name", None) # 이부분 email = profile_json.get("email", None) bio = profile_json.get("bio", None) try: user = users_models.User.objects.get(email=email) if user.login_method != users_models.User.LOGIN_GITHUB: raise GithubException() except users_models.User.DoesNotExist: user = users_models.User.objects.create( email=email, first_name=name, # 이부분 username=email, bio=bio, login_method=users_models.User.LOGIN_GITHUB, ) user.set_unusable_password() user.save()
소셜로그인을 구현하다
받아온 json에서 email 값이 없어 db에 username = Null이 되어서
문제가 생겼다. models.py User에서 username field에서 Null = True를 해주어도 된다.
하지만 username은 어디서든 항상 사용할것이기 때문에 Null이 되어서는 안된다.
그래서
1. GitHub -> Settings -> Email ->
Keep my email addresses private를 Deactive를 해주고
2. Profiles -> Public Emails 에서 email을 선택 -> update profile
하게되면 해당 계정으로 social login을 시도할때에 email이 None 이 아닌
제대로 된 값이 넘어 오게 된다.
'Python > Django' 카테고리의 다른 글
[Django] 쉽게 User을 Create 해보자 UserCreationForm (0) 2021.12.18 [Django] string 혹은 bytes 를 content file로 managing 해주자 (0) 2021.12.18 [Python] Django 비밀번호 암호화해서 저장하기 set_password (0) 2021.12.16 [Python] Django FormView 와 View를 상속받아 로그인 로그아웃 구현하기 (0) 2021.12.16 [Python] Django reverser(), reverser_lazy() 사용하기 (0) 2021.12.16