WebSocket과 HTTP, SSE WebSocket과 HTTP,SSE 모두 응용계층에서 사용되는 프로토콜이다. HTTP는 클라이언트-서버 간의 통신을 위한 단방향 통신이고 SSE는 서버에서 클라이언트 통신을 위한 일방향 통신다. 그리고 WebSocket는 jongseoung.tistory.com 알림 기능에서 SSE를 사용하는 이유는 위에 포스팅에 작성해 두었다. Django에서 알람 기능을 구현한 레퍼런스가 많이 없어서 정말 힘들었다. Django channels도 한번 구현해 보았지만 내가 원하는 결과와는 조금 달랐고 Django eventstream이라는 라이브러리가 있다고 해서 찾아보았지만 레퍼런스도 없고 문서, 리드미파일도 업데이트가 안되어있어서 코드를 하나하나 뜯어보는 고생을 했다. 이번글..
BackEnd/Django, DRF
dj-rest-auth와 django-allauth를 사용하여 소셜 로그인 및 회원가입을 구현하는데 카카오와 깃허브는 정상적으로 잘 되는데 구글의 경우는 에러가 발생하는 상황이 일어났다. 에러코드 문제가 되는 부분은 accept를 받아오는 부분인데 response["id_token"], TypeError: string indices must be integers 에러로 response가 딕셔너리가 아니라 string여서 status가 500 에러가 발생하였다. dj-rest-auth부터 거진 한 달 동안 이 에러를 찾아다녔는데 django-allauth의 0.52.0의 버전 문제였다. (사실문제를 첫날에 문제를 파악했지만 버전다운이 최후의 선택이라 생각해서 기존 버전을 유지한 채로 진행하는 게 맞다고 생..
Django를 이용하여 포스팅을 구현할 때 포스팅은 페이지네이션과 무한 스크롤 기법이 있다. 페이지네이션 - 페이지네이션은 디지털 콘텐츠를 웹사이트의 또 다른 페이지들로 분리하는 방법입니다. 사용자는 페이지 하단에 있는 숫자 형식의 링크를 클릭하여 페이지들을 탐색할 수 있습니다. 페이지네이션된 콘텐츠 일반적으로 몇 가지 공통된 주제 혹은 목적들을 지니고 있습니다. 무한 스크롤 - 무한 스크롤은 사용자가 페이지 하단에 도달했을 때, 콘텐츠가 계속 로드되는 사용자 경험(UX, User EXperience) 방식입니다. 이는 마치 끝이 없는 단일 페이지에서 끝없는 정보의 흐름을 경험하게 만듭니다. 무한 스크롤의 경우는 Post의 모든 오브젝트를 가지고 오면되지만 페이지네이션의 경우는 페이지 별로 가지고 와야 ..
Django JWT를 이용한 소셜로그인 (백엔드) Django를 백엔드로 이용해서 소셜로그인을 구현하려고 하는데 내가 못 찾는 건지 모르겠지만 Djnago를 백으로만 사용하여 구현한 글이 생각보다 참고할 글이 없고 이렇게 저렇게 시행착오가 많았 jongseoung.tistory.com 여기에서 설명했던 유저 정보를 가지고 JWT 토큰을 발급하는 Serializer을 작성하는 내용이다. 전체 코드 from rest_framework_simplejwt.tokens import RefreshToken, TokenError from rest_framework_simplejwt.serializers import TokenObtainPairSerializer from rest_framework import seri..
Django를 백엔드로 이용해서 소셜로그인을 구현하려고 하는데 내가 못 찾는 건지 모르겠지만 Djnago를 백으로만 사용하여 구현한 글이 생각보다 참고할 글이 없고 이렇게 저렇게 시행착오가 많았다. 지금 와서 생각해 보면 당연한 이야기이고 조금만 생각해 보면 결과를 도출해 낼 수 있었는데 왜 더 빠르게 생각해내지 못했는지.. 우선 소셜로그인의 전반적인 과정을 이해하는게 중요하다고 생각한다. 아래의 그림은 내가 전반적인 과정을 이해하는데 가장 큰 도움이 된 그림이다. 그럼 백단에서 해야 할 일은 무엇인가? 1. 프론트에서 보내는 인가코드를 받아서 Redirect url과 함께 카카오로 전송한다. 2. 카카오에서 보낸 토큰을 받아서 우리 서버의 JWT 토큰을 생성하고 로그인시켜 준다. 이렇게 정리하고 보니 ..