
지난시간 로그인 처리를 훌륭하게 마무리 했다. 이번 시간은 쉬어가는 코너로 JWT 세팅 중 그다지 중요하진 않지만 해놓으면 편한 그런 셋팅을 마무리하려고 한다. 일단 필요한 기능이 "JWT_GET_USER_SECRET_KEY" 이거다. 서명할 때 사용자 개인 키를 적용해 서명을 암호화할 때 사용하게 한다. 이 기능이 있어야 나중에 로그아웃도 만들 수 있다. account 앱에 utils.py 파일을 하나 만들자. 이렇게 만들고 utils.py 에 아래와 같이 코딩하자. account/utils.py def get_secret_key(model): return model.secret 그냥 이렇게만 코딩해도 괜찮다. 이렇게 코딩하고 settings.py 파일을 열자. funny_picture/settings..

자, 이제 드디어 로그인을 해야하는 상황이 도래했다. 사실 요즘 새로 시작하는 것들이 많아서, 그리고 회사일이 많아서 글 올라가는 타이밍이 점점 밀리는데 이런때일 수록 힘을 내서 글을 올려야지. 오늘은 로그인을 위해 JWT 토큰을 발급받고 이걸로 권한이 필요한 API를 호출해보는 작업을 진행할 예정이다. 이전부터 자꾸 JWT를 이야기 하면서 로그인하려면 이걸 해야한다고 말했지만 정작 JWT에 대해서 제대로 이야기 해준적이 없어서 JWT에 대해서 먼저 알아보도록 하자. JWT(JSON Web Token) 일단 공식 사이트는 https://jwt.io/ 여기에 가면 된다. 영어가 되는 분들은 여기가면 아주 상세하고 자세한 JWT에 대한 정보를 얻을 수 있다. 하지만 나같이 영어에 대해 알러지가 있는 사람들은..

일단 우리는 지난 시간까지 한 작업은 Django의 auth 앱에서 사용하는 사용자 정보를 확장하여 우리 입맛대로 수정한 다음에 DB에 반영하고 관리자까지 한명 등록해봤다. 오늘은 이제 Serializing이라는 과정을 통해 사용자 정보를 가져오는 API를 하나 만들어보려고 한다. 왜 Serializing하는 것일까? 일단 DB에서 가져온 어떤 데이터를 그대로 사용자에게 전달 할 수 없고 이것을 "직렬화(Serializing)"라는 과정을 통해 데이터를 전달할 수 있도록 포멧을 변경하게 된다. 이 과정을 처음 겪는 사람들은 이를 귀찮다고 생각할 수 있는데 이 과정은 꽤 필수적인 과정이고 이 과정이 없어보이는 다른 프로그래밍 언어들도 눈에는 보이지 않지만 사실 이 직렬화라는 과정을 거쳐서 데이터를 전달하고..

오늘 사용자 정보에 대한 나머지 이야기보다 먼저 코딩에서 흔히 이야기 하는 "함수"에 대해서 이야기하는 시간을 갖으려고 한다. 함수란 무엇인가요? 함수라는게 사실 우리가 중학교 시절 배웠던 내용과 다를게 없다. 예를 들어 위의 함수처럼 f(x) = 2x 라는 함수가 있다고 보자 f(x)에서의 x를 우리는 매개변수, 파라미터, Argument라고 부른다. 그리고 이 매개변수는 2x 부분의 x와 같은 값이라는 것을 우리는 중학교때 다 배웠다는 것을 기억해야한다. 아참, 아직 중학교 교육과정을 거치지 않은 사람들을 위해 아래와 같이 설명 해주겠다. f(x) = 2x 라는 함수를 그림으로 그려서 표현하면 위의 왼쪽 이미지, f(2) = 2 * 2 = 4 라는 것이 오른쪽 이미지라고 생각해보면 함수라는 것이 사실..

일단 우리가 Django에서 제공받는 기본 앱들 중에 "auth"라는 것이 있는데 이 녀석이 기본적인 사용자 객체와 로그인, 로그아웃, 권한 같은 기능들을 제공해준다. 그래서 이 녀석의 도움으로 우리만의 사용자 정보를 저장하는 객체를 만들어주려고 한다. 이때 몇 가지 전제조건들이 붙는데 우리는 로그인, 로그아웃과 관련된 기능들은 JWT(JSON Web Token)라고 하는 앞서서 몇몇 포스팅에도 말했던 기능을 이용해 로그인, 로그아웃을 구현할 거다. 뭔가 대단해 보이고 어려워 보이지만 별거 없는 내용이니 긴장하거나 어려워할 필요는 없다. 그냥 어려워 보일뿐 실제 작업은 어렵지 않다. JWT를 위해 사용자 정보에는 secret_key를 추가할 예정이다. JWT로 발급된 토큰의 암호화된 서명의 키로 secr..

지난 시간까지 개발 환경을 준비하고 본격 개발에 들어가려고 했다가 이 포스트들의 정체성을 잠시 고민하게 되었다. 내가 곳곳에서 던져대는 어려운 단어들의 개념도 제대로 정리하지 않고 너무 달린 것이 아닌지 생각했다. 이 포스팅의 타겟이 프로그래밍을 처음 접하는 사람들인데 용어정리를 하지 않고 진행하면 고구마 먹은 것같은 느낌으로 계속 이 글을 읽어야 하는 것이 아닌가 하고 말이다. 사실 내가 이야기하는 용어들은 최대한 설명하면서 진행하긴 하겠지만 오늘 이야기할 "클래스"라는 것은 하나의 챕터로 분리하여 이야기 해야할 만큼 내용이 많다. 그리고 앞으로 많이 나올 것이고 클래스라는 개념을 이해 못해도 사실 코딩을 하는데 많은 문제가 생기는 것은 아니지만 우리가 "지구는 둥글다"라는 상식을 당연하게 알고 있는 ..

일단 [짤방 검색기]#8-1. Django를 셋팅하자를 잘 수행했다면 이제 몇가지 명령을 통해 제대로 셋팅이 되었는지 확인해볼 차례다. 데이터베이스 세팅 확인하기 cmd 창에다가 아래와 같이 입력해보자. (.env) $ python funny_picture\manage.py makemigrations (.env) $ python funny_picture\manage.py migrate 이렇게 입력하면 아래와 같이 cmd 창에 메시지들이 표시될거다. 이것은 일단 Django에 기본적으로 적용되어있는 Apps에 기본적으로 탑재 되어있는 DB 정보를 적용하는 과정인데 makemigrations와 migrate 명령은 앞으로 많이 사용할 명령이니 외워두는 것이 도움이 된다. 암튼 위와 같이 결과가 나온다면 성공..

일단 우리가 지난 시간 Flask를 이용해서 back-api에 이리저리 작업한걸 시원하게 삭제한다.(제길) 그리고 다시 가상환경을 만들자. 그리고 VisualStudioCode 실행하자. cmd 화면에서 "code ."입력해주면 되고 안되는 사람은 https://blog.thereis.xyz/94 아래 쪽에 보면 해결방법 나오니까 따라하시면 됨. 혹시 위의 내용을 입력하기 힘들어하는 사람이 있을 까봐 아래의 코드 입력란에서 퍼갈 수 있다. django >=1.9,

요 며칠 포스팅이 뜸했는데 그 이유에 대해서 이야기하려고 이런 "비상사태" 포스트를 올린다. 그동안 짤방 검색기를 만들기 위해서 Flask를 이용한 웹 API 서버를 만드려고 이것저것 시도를 해보다가 규모가 좀 생기려고 하니 Flask가 갖는 태생적 한계점에 부딪히게 되어버렸다. 일단 이유를 이야기하자면 이렇다. Flask의 장점인 간편한 개발 장점이 바로 단점으로 작용하는 가장 적절한 예가 되어버린 것 같다. 우리는 지난 시간 일단 관리자가 짤방을 등록을 하기 위해서는 로그인을 해야 하고 로그인을 하기 위해서는 관리자를 등록해야 하니 DB를 먼저 세팅하자 해서 MySQL을 설치하는 과정까지 마무리를 했다. 나는 이후에 적절하게 데이터를 잘 입력하는지, 그리고 잘 가져오는지 까지 확인하고 이후의 절차에 ..

이제 DB도 준비되었으니 Flask와 DB를 연결하는 작업을 진행하려고 한다. 내가 포스팅을 준비하는 동안 Flask 하위 프레임워크 중에 Flask-Restful이라는 녀석이 있음을 알게 되었다. 우리는 Flask를 이용해 Restful API 서버라는 것을 만들 예정이었는데 누가 그 밑 작업을 다 해놓고 Flask-Restful이라는 이름으로 벌써 배포해 놓고 있었다는 사실을 알아버린 거다. 그리고 requirements.txt라는 녀석을 이용해서 우리가 설치할 패키지들을 보다 스마트하게 만들 수 있다는 것을 알게 되었다. 그래서 나는 back-api 안에 있는 모든 내용을 깔끔하게 지워버리고 개발환경을 다시 세팅하기로 했다. 보통 처음 하는 일엔 삽질이 필요한 법이다. 미안하지만 개발환경을 다시 만..