본문 바로가기

Coding/Python113

Python *args, **kwargs 란 무엇인가 예전부터 코드를 보다보면 인자로 *args, **kwargs를 받는 함수를 상당히 많이 볼 수 있었다. def test(*args, **kwargs): ~~ 대충 이러한 형태로 생긴것들을 말한다.지금까지는 몰라도 크게 문제가 되는 부분도 없었고 굳이 찾아볼 필요성을 못느꼈는데,이번에 진행하고 있는 프로젝트에서 해당 부분의 지식이 필요하여 제대로 찾아봤다.일단 첫인상은 별로였다. C언어의 포인터를 보는 느낌으로 상당히 꺼려지는 느낌이랄까.결론부터 말하자면 아래와 같다. *args는 인자를 tuple형태로 받는다.**kwargs는 인자를 dictionary 형태로 받는다. (key: value 형태) 위 두가지가 핵심 내용이므로 꼭 숙지하도록 하고 간단한 예제를 통해 살펴본다.먼저 *args를 어떠한 형태로.. 2018. 8. 6.
Django Restframework JWT 토큰 인증 커스터마이징 Django의 DRF에서는 djangorestframework-jwt라는 라이브러리를 사용하면 쉽게 토큰을 사용할 수 있다.기존에는 그냥 import jwt를 통하여 작업을 했었는데 이렇게 라이브러리를 올려놓고 사용하다 보니 뭔가 헷갈렸다.편하게 사용하자고 설치한 라이브러리인데 오히려 더 불편한 느낌이랄까.내가 이해를 제대로 못하는건지 모르겠지만 개인적으로 장고 관련 자료들은 Document들이 전부다 부실한 느낌이다.오늘은 내가 겪었던 불편사항들과 그 해결 방법에 대해 적어본다.먼저 위 라이브러리를 사용하면 쉽게 토큰 발급, 토큰 재발행 등의 작업을 할 수 있다.하지만 문제점은 실제 view에서 작업할 때 해당 라이브러리들을 어떻게 엮어줘야할까 였다.라이브러리를 까보고 싶지 않았지만 어쩔수 없이 직접 .. 2018. 6. 28.
Django AbstractBaseUser로 Custom user모델 만드는 방법 이전에 Custom User모델 만드는 방법에 대해서 포스팅했었는데다시 읽어보니 상당히 부실한 문서였다고 생각이 들어서 다시 한번 자세히 포스팅한다.장고는 기본적으로 인증에 관련된 유저 모델을 가지고 있다.하지만 내가 만드는 서비스와 맞지 않은 정보들을 가지고 있을 때는 굳이 그 유저 모델을 사용할 필요도 없으며 사용할 수도 없다.따라서 기존에 존재하는 모델을 상속받아서 내 입맛에 맞게 수정해줘야 한다.프록시 모델 등 여러가지가 있지만 기본적으로 AbstractUser와 AbstractBaseUser 두가지를 설명한다.AbstractUser를 사용하면 아래와 같이 어느정도 기본적으로 사용할 때 필요한 많은 정보들을 같이 준다. id / password / last_login / is_superuser /.. 2018. 6. 25.
학식봇 Django Restframework API 정리 Django의 Restframework로 학식봇 API서버를 만들었었는데,코드를 작성한지 상당히 오래 지나서 다시 한번 기억을 되살릴겸 작성한다. 보통 장고로 작업할때는 Dependency 문제를 해결하기 위해 가상환경으로 진입하여 작업한다.이 포스팅에서는 가상환경을 위해 pipenv를 사용한다. ( 설치 방법은 http://hides.kr/913 참고 )다음으로 django와 djangorestframework를 설치한다. pipenv shellpipenv install djangopipenv install djangorestframework 다음으로 프로젝트와 앱을 생성해준다.우리는 메뉴에 관한 정보와 익명게시판을 위한 정보가 필요하기 때문에 menu, board두개의 앱을 생성할 것이다. djang.. 2018. 6. 24.
Django+Nginx CORS 문제 해결 방법 기존에 만들어뒀던 학식봇 API를 사용하여 웹으로도 접근 가능하게 만들고 있었다.React.js를 사용하여 코드를 짜고 있었기 때문에 fetch()를 통해 웹에 접근해야 하는데당연하게도 CORS(Cross Origin Resource Sharing) 문제가 발생했다.CORS는 쉽게 말해서 같은 도메인으로만 접근이 가능하도록 하는 Security Policy라고 보면 된다.그래서 찾아보던 도중 fetch의 인자에 {mode: 'no-cors'} 를 같이 넘겨주면 된다고 나와있어서테스트해봤는데 뭔가 제대로 오지 않았다. (status도 false로 나옴)더 찾아보니까 Django에서 설정하면 될 것 같다.현재 내 API서버는 Django Restframework로 구성되어 있으며 Nginx를 통해 배포되고 .. 2018. 6. 5.
Django JWT 토큰인증 정리 범위 : #1-70 Setting up JWT 보통 어플리케이션을 이용하여 인증을 진행할때는 세션을 사용하지 않는다.그보다 Token을 이용하여 진행하는게 더 편리하고 적합하기 때문이다.여러가지 방법이 있지만 JWT(Json Web Token)라는 편리한 방법이 있다.먼저 아래의 명령어를 통해 설치해준다. pipenv install djangorestframework-jwt위 명령어를 통해 설치를 진행하고 위처럼 설치가 진행된다.이제 JWT를 사용하겠다는 설정을 해줘야한다.settings.py를 열고 아래의 내용을 추가한다. REST_FRAMEWORK = { 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.IsAuthenticated', ), '.. 2018. 5. 1.