본문 바로가기

전체 글

(82)
Python - pyjwt v2.0.0 업데이트에 따른 이슈 인가 : 사용자가 요청하는 request를 실행할 수 있는 권한이 있는 유저인가를 확인하는 절차 사용자는 인가의 수단으로 headers에 메타데이터를 넣어서 요청을 보냅니다. pyjwt는 이 메타데이터 JWT(JSON Web Token)를 구현할 수 있게 해주는 라이브러리입니다. 2018년 말 release된 v1.7.1에서는 jwt.encode를 실행했을 때 actual result가 bytes type으로 나오는 이슈가 있었습니다. 2020년 말 release 된 v2.0.0에서는 여러가지가 바뀌었습니다. - 3.5 이하의 python은 support 하지 않음 - jwt.encode의 return type은 string - jwt.decode에 algorithms를 필수 param으로 사용 - jw..
Django 회원가입, 로그인 엔드포인트 인스타그램의 기능을 한 가지씩 만들어보는 westagram 프로젝트를 진행중이다. 첫 단계는 회원가입과 로그인이다. 원래 회원가입 엔드포인트와 로그인 엔드포인트 블로그 글을 따로 쓰려 했는데, 에러 처리 면에서 전자가 후자를 포괄한다고 볼 수 있어서 글을 수정했다.(만들면서 쓸 걸 나중에 쓰니까 번거롭다...) 회원가입 조건 필수 사항: email, password email에는 '@'와 '.'가 반드시 포함되어야 함. password는 8자 이상. user/models.py from django.db import models class User(models.Model): email = models.CharField(max_length=30) password = models.CharField(max_le..
django.db.utils.OperationalError: (1054, "Unknown column 'menu_id_id' in 'categories'") 처음 models.py를 만들 때 categories 테이블에 들어갈 ForeignKey의 이름을 잘못 주었다. ForeignKey는 장고가 알아서 _id를 붙여 column name을 주는데, 이름 자체에도 _id를 붙여 migrate한 바람에 column name이 menu_id_id 이렇게 만들어졌다. 그래서 일단 수정하고 그 뒤 작업을 계속했다. 이 때 잊은게, makemigration은 하고 migrate를 안 했다... runserver할 때 migrate를 하라는 경고가 떴지만 이것저것 바꾸고 있으니 조금만 있다가 하자, 하던게 쌓이고 쌓여... 오늘은 migrate를 해야겠다 생각하고 $ python manage.py migrate를 했는데 에러를 보고 예상은 했지만 어디서 문제가 났는지 ..
error: src refspec origin does not match any 가능성이 있는 원인 2가지 1. 새로 폴더를 만들어 git init 한 뒤 commit을 한 번도 하지 않았을 때 2. upstream 설정이 안 되었을 때 3. 2를 해결하고자 git이 준 코드를 쳤는데 오타를 냈을 때 내 경우는 2와 3이었다. 어제 한 일 1. Github에는 이미 쓰고 있던 repo가 있음 2. 로컬에 $ mkdir 을 하고 새 파일도 만들어 놓음 3. $ git clone을 하지 않고 기존 repo와 연결하기 위해 이 폴더에서 아래를 실행함 $ git init $ git remote add origin 4. (여긴 기억이 정확하지 않음) 일단 지금 있는 걸 add, commit 해주고 $ git pull로 기존 repo를 당겨옴 5. $ git push를 하고 보니 로컬 브랜치는..
Django CRUD - QuerySet API $ python manage.py shell 이 쉘은 장고를 통해 연 쉘이라 장고는 이미 import되어 있다. models.py 내의 필요한 class를 import해야 된다. >>> from .models import 이렇게 import하고 나면 해당 class들을 사용할 수 있다. CRUD (Create, Retrieve, Update, Delete) 데이터를 처리하는 4가지(생성, 조회, 업데이트, 삭제) 방식이다. 장고의 DB는 장고가 제공하는 ORM을 사용해 Model의 class 기반 객체로 맵핑할 수 있다. View에서 QuerySet method를 이용해 작성한 로직대로 이 객체에 접근해 CRUD 작업을 할 수 있다. 이 때 객체가 메모리에 할당되어 소프트웨어에 실체화 된 것을 insta..