YEOJIN-DEV

TIL - 180730

July 30, 2018 | 1 Minute Read

7월 30일 TIL : 배민찬 카피 프로젝트

django-extension 패키지 활용해 Django 모델 ERD 이미지 파일 생성

필요한 프로그램, 패키지 설치

$ brew install graphviz
$ pipenv install pygraphviz

Django 설정

# settings.py
GRAPH_MODELS = {
  'all_applications': True,
  'group_models': True,
}
INSTALLED_APPS += [
    'django_extensions',
]

위와 같이 설정하고 아래와 같이 실행하면 이미지 파일을 생성할 수 있다.

$ ./manage.py graph_models -a -g -o my_project_visualized.png

예시 파일은 여기!

Django ERD Sample

카카오 REST API를 활용해 카카오톡 로그인

카카오 REST API 문서를 읽고 카카오톡 로그인에 도전하였다.

  1. 카카오톡 개발자 등록 후 웹 앱 등록
  2. 카카오 REST API 문서대로 이용해 카카오톡 로그인 URL로 이동
  3. 사용자가 카카오톡 로그인을 하면 REST API가 내가 설정한 redirect_uri로 code 전송(GET 방식)
  4. (여기서부터는 Django Custom Backend 생성)code 활용해 access_token을 받아오는 POST 방식의 request 만듦
  5. 받아온 access_token을 활용해 사용자의 카카오톡 계정 정보를 얻어옴
  6. 계정 정보로 Djagno 애플리케이션의 유저 생성 후 로그인(Custom Backend 끝)
  7. 사용자에게 로그인 화면 정보가 담긴 응답 전송 또는 JSON 전송
  8. Django 애플리케이션의 settings.py에 AUTHENTICATION_BACKEND 설정 추가

이 커밋에 해당 코드가 담겨 있다.

OAUTH 2.0의 기본 흐름

카카오톡 로그인을 구현하는 것을 겸해 OAUTH 2.0의 흐름을 정리했다.

OAUTH 2.0

  1. (1) 사용자의 로그인 요청(웹 앱)
  2. (1.1) 인증 서버로 URI 전송(리다이렉트)
  3. (2) 1.1의 인증 서버로 로그인 화면 요청
  4. (2.1) 인증 서버는 로그인 화면 응답
  5. (3) 로그인 정보 입력
  6. (4) 로그인 정보를 담아 로그인 요청
  7. (5) 인증 서버는 로그인 처리
  8. (6) 인증 정보(카카오 REST API의 code) 사용자에게 응답
  9. (7) 인증 정보를 웹 앱에 전송
  10. (7.1) 웹 앱은 사용자에게 받은 인증 정보와 함께 access_token을 인증 서버로 요청
  11. (7.2) 인증 서버의 access_token 응답
  12. (7.3) 웹 앱은 access_token과 함께 데이터 서버로 사용자의 정보 요청
  13. (7.3.1, 2) 웹 앱의 요청을 데이터 서버가 처리 후 응답
  14. (7.4, 5) 웹 앱은 데이터 서버로부터 응답받은 정보로 로그인 완료 화면 생성 후 사용자에게 응답