BackEnd (28) 썸네일형 리스트형 DRF - 소셜 로그인 -2(Naver Login) 지난 1편에서는 Callback 응답 정보를 올바르게 받아오는 것까지 작성을 했었습니다. 이번 2편에서는 NaverCallbackAPIView 를 수정해서 회원가입, 로그인까지 가능하도록 만들어보겠습니다. 목차 1. views.py 2. NaverCallbackAPIView 3. usls.py 1. views.py 지난 1편에서 NaverCallbackAPIView 를 만들고 실행까지 시켰었습니다. 출력이 try 문을 통해 "성공"이 출력 됐었는데, 확인을 못하신 분들은 다시 한번 실행해서 확인해보시기 바랍니다. 이번 2편에서는 전체 view.py 파일과 urls.py 파일을 수정합니다. 먼저 전체 수정된 파일들을 확인하신 후 각 파트별로 어떻게 되어 있는지 설명하도록 하겠습니다. *NaverLoginA.. DRF - 소셜 로그인 - 1(Naver Login) 안드로이드 어플을 만드는 과정에서 Naver Login 기능이 필요했습니다. 하지만 테스트 환경에서 DRF로 네이버 소셜로그인을 서술한 글이 없어 여러가지 글들을 참고해 기능을 만들어보았습니다. *Project에서는 결국 소셜로그인 기능을 네이티브로 구현하기로 했습니다. 여기서 서술하는 방법은 웹, 모바일 웹 등에서 사용할 수 있는 방법이라고 생각됩니다. 테스트 환경에서 DRF 에서 Naver Login이 가능하도록 설정하는 방법에 대해 작성해보도록 하겠습니다. 목차 1. 네이버 로그인 API 등록 2. settings.py 3. views.py 4. 실행해보기 1. 네이버 로그인 API 등록 네이버 로그인 API 를 사용하기 위해서는 우선적으로 "Naver Developers"에서 어플리케이션을 등록해.. [#Linux] yum lock 오류 해결 방법 Another app is currently holding the yum lock; waiting for it to exit . . . 오류 해결 방법 yum 을 이용해 작업을 하는 도중 Stop 후 다시 yum 을 사용하게 되면 아래와 같은 오류가 발생할 가능성이 있습니다. 해결방법 1) 작업 목록 확인: ps -ef | grep yum 2) 목록에서 죽이기: $ sudo kill -9 3567 [# DRF Project_User] 5. Updating Users(사용자 정보 수정) Django Rest Framework 앞서 우리는 회원가입 기능, 로그인하는 기능을 만들었습니다. 사용자들에게 있어서 회원가입을 하고 로그인을 한 다음에는 어떤 기능이 필요할까요? 만약 사용자가 정보를 잘못 입력해서 가입을 했다면 어떻게 해야할까요? 우선 사용자가 정보를 잘못 입력했는지 확인이 필요합니다. 첫번째로 만들어 볼 기능은 "내 정보 확인" 기능입니다. 보통 사이트에 들어가면 있는 "내 정보" 페이지와 같은 기능을 합니다. 두번째로 만들어 볼 기능은 확인된 잘못 입력한 정보를 수정하는 기능입니다. "내 정보" 페이지에서 정보를 고친 후 "저장하기"를 누르면 실행되는 기능입니다. 위의 두 가지 기능을 차근차근 만들어보도록 하겠습니다. 목차 1. serializers.py 2. views.py 3.. [# python] 속성을 추가하고 속성값을 바꾸는 Setattr Python setattr(object, attribute_name, property) setattr(객체, 속성명, 속성값) Setattr은 정의된 속성값을 바꾸거나 새롭게 속성을 추가할 때 사용합니다. 아래 예시를 보시면 이해하시기 편하실 겁니다. 우선 class로 여러 속성을 가진 SoccerPlayer를 생성하겠습니다. class SoccerPlayer: name = 'Messi' age = 34 height = '169cm' place_of_brith = 'Argentina' team = 'Barcelona' position = 'Forward' 다음으로 SoccerPlayer를 player1에 할당하겠습니다. 그리고 각 속성에 접근해 속성값을 출력하도록 하겠습니다. player1 = Socce.. [# DRF Project_User] 4. User Login(로그인 기능) Django Rest Framework Part. 4 이번 파트에서는 로그인 기능을 만들어보도록 하겠습니다. 목차 1. serializers.py 2. views.py 3. urls.py 4. 로그인 시도 5. exceptions.py 6. settings.py 7. renderers.py 1. serializers.py 로그인 기능을 만들기 위해서 첫번째로 serializer를 먼저 만들어줘야 합니다. 먼저 authentication/api/serializers.py 파일을 열고 몇몇 모듈을 import 해줍니다. + from django.contrib.auth import authenticate + from django.utils import timezone from rest_framework imp.. AWS CLI configure 설정 방법(Ubuntu 20.04 WSL2) AWS 1. Version 확인 # aws --version aws-cli/2.2.16 Python/3.8.8 Linux/5.10.16.3-microsoft-standard-WSL2 exe/x86_64.ubuntu.20 prompt/off 2. AWS configure 사용자의 계정과 발급받은 액세스 키를 넣어줄 차례입니다. 먼저 .aws 폴더를 찾아 config 파일을 수정해주어야 하는데, 저는 이거 찾는데만 한시간 이상 걸렸습니다. 아무래도 리눅스가 익숙하지 않아서 그랬을까요. . . 아무리 찾아도 없더라구요. 그래서 찾은 방법이 바로 aws 명령어로 ID와 Key를 입력하는 것입니다. axce@DESKTOP-20FUN55:~$ aws configure AWS Access Key ID [None]: .. ImageField 사용 방법(Upload Image) Django Rest Framework ImageField를 사용하는 방법에 대해서 알아보도록 하겠습니다. 목차 1. Models.py 2. Settings.py 3. Urls.py 4. Serializers.py 5. POSTMAN으로 전송 1. Models.py 모델에 ImageField를 만듭니다. brand_logo = models.ImageField(default='media/Ryan.png', upload_to="%Y/%m/%d") default : brand_logo를 설정하지 않으면 기본으로 업로드 되어 있는 파일을 사용합니다. upload_to : 이미지를 업로드 할 때 저장되는 경로를 지정합니다. "%Y/%m/%d" 의 경우 현재 날짜를 사용합니다. 2. Settings.py 프로젝트의.. DRF - 중첩데이터(nested data) 받는 방법(NestedSerializerMixin) Django Rest Framework ForeignKey(이하 Fk) 혹은 ManyToMany로 연결된 상태의 모델들을 Get 방식으로는 중첩된 데이터를 받고, POST 혹은 UPDATE 시에는 PrimaryKey(이하 Pk)로만 보내는 방식에 대해 써보고자 합니다. POST와 UPDATE 때는 참조되는 테이블의 정보를 생성하거나 수정할 수 없습니다. 즉, 이 방식은 이미 있는 참조데이터를 POST, UPDATE할 때 참조위치를 변경하는 정도로 사용됩니다. 글로만 이해가 안되시는 분들을 위해 사진으로 먼저 보여드리고 진행하도록 하겠습니다. 다음과 같이 하는 이유는 이미 정해져있는 B 테이블의 요소를 참조해 Get할 때 B 테이블의 요소들을 보여주고, Post나 Update할 때는 단순히 참조만 해서 이.. 변수 이름 for문으로 할당하는 방법(globals( )) Python 종종 변수 이름 바꿔가면서 할당해야 하는 일이 생깁니다. 이때 어떤 식으로 변수 이름을 바꿔서 할당할 수 있는지 알아보도록 하겠습니다. 다양한 방법으로 활용하기 위해서 format 함수를 먼저 공부한 후 변수 이름을 바꿔주는 globals 함수를 알아보도록 하겠습니다. - format 함수 - globals 함수 1. Format 함수 format 함수는 중괄호 { } 를 index로 사용해 값을 할당하는 함수입니다. variable = "{Index 1} * {Index 2} = {Index 3}".format(Index 1 값, Index 2 값, Index 3 값) 앞에 나오는 중괄호 안에 있는 "Index 1" 라는 글자는 보시기 쉽게 Index가 1번이라고 표시한 것입니다. 이 "I.. 이전 1 2 3 다음