프로젝트를 진행하면서 모델을 설계했는데 일대일 관계에 있는 모델을 생성해야했다. 처음 설계 시에는 별다른 생각없이 그냥 설계를 했는데, API를 테스트하면서 부모 모델이 생성되면 자식 모델도 default로 같이 생성되는 형태의 로직이 필요했다 -> 아니 필수적이였다. 예를 들어 User하나에는 반드시 Allergy 모델이 있어야 한다고 하자. User 하나가 생성되면 -> Allergy 모델도 default로 생성이 되어야한다. 일대일 대응 모델을 자동으로 생성해주는 코드는 Django docs의 signals를 보면 알 수 있다. signal을 통해 특정 sender는 어떤한 행동이 취해졌음을 receiver에게 알릴 수 있다. 프로세스에서 signal을 전달하여 신호를 주고받는 느낌? 과 비슷한 맥..
프로젝트에서 백엔드 서버 구성을 담당하는 역할을 맡고 있다. 백엔드 서버와 프론트엔드 서버를 독립적으로 설계하였는데, 서버에서 클라이언트로 쿠키를 전달하는 과정에서 SameSite 이슈를 발견했다. 웹 사이트에 로그인하는 과정에서setCookie 헤더로 토큰 값을 넣어둔 뒤, 이후 요청부터 전송될 쿠키의 헤더에 토큰 ID를 읽어 어떤 사용자가 보낸 요청인지 판단하는 방식으로 사용하려고 하는 과정에서 에러를 마주했다. 처음 보는 에러라 일단 구글링부터 했는데 20년 2월 4일 릴리즈된 구글크롬(Google Chrome)80버전부터 새로운 쿠키 정책이 적용 되어 Cookie의 SameSite 속성의 기본값이 "None"에서 "Lax"로 변경되어 발생하는 에러라고 한다. 스택 오버플로우 등등 많은 사이트를 돌..
웹을 개발하는 개발자에게 유저 인증은 기본적이면서도 중요한 절차이다. 회원가입, 로그인, 로그아웃 등 유저를 기반으로 한 기능을 구현하는 단계에서 유저 인증에 관하여 궁금한 점이 생길 것이다. (아마도...?) 최근 여러 블로그들을 살펴보면 Rest Framework 라이브러리의 JWT를 이용해 쉽게 JWT 인증을 구현하는 것을 볼 수 있다. JWT를 사용하고 있지만 어떻게 토큰이 만들어지고, 왜 JWT가 유용한지 정리해보자한다. https://www.qu3vipon.com/django-jwt 위 블로그 내용을 참고한 내용을 바탕으로 정리하였습니다. Session based authentication WT를 알아보기 전 먼저 session based authentication에 대해 알아야한다. JWT를..
이전 Serializer 포스팅에서 Serializer를 만들 때 필드를 각각 설정했었다. models.py 에서 정의한 모델의 attibute를 다시 반복해서 설정해주는 느낌이 들어서 불편한 점이 있었다. BaseSerializer를 쓴다고 해서 문제가 되지는 않지만 우리는 편리함을 추구하는 개발자이기 때문에! ModelSerializer를 알아보자. joeylee.log님의 게시글을 참고하였습니다. ModelSerializer는 크게 3가지의 기능을 제공한다. 1. 의존하고 있는 모델에 기반해서 Serializer 필드를 자동으로 생성 2. Serializer를 위한 validator 제공 3. Create, Update 함수를 기본으로 제공 아래 코드는 ModelSerializer 클래스에서 제공하..
Django에서 View를 만들어 웹 게시판에서 가장 기본 기능인 Create, Read, Update, Delete를 구현해보자. DRF에서 뷰를 만드는 것은 순수 장고를 사용할때와 마찬가지로 함수형, 클래스형 2가지로 나눌 수 있다. REST Framework는 API 뷰를 만드는데 2가지 wrapper를 제공한다. 함수형 View: @api_view 클래스형 View: APIView wrapper에서는 뷰에서 Request 인스턴스를 수신하고, 해당 메소드를 인자로 전달해서 메소드에 맞는 로직 실행. 클래스형 View는 APIView, GenericView, ViewSet으로 추상화 단계를 높일 수 있는데 우선 APIView부터 알아보자. 1. 엔드포인트 구성(urls.py) - pk(primary..
Django Rest Framework DRF를 공부했는데 정리가 필요한 것 같고 직접 간단히 실습하기 위해서 코드를 돌려봤습니다 ! joeylee.log 블로그를 참고하였습니다. Pycharm을 이용해 newapi 프로젝트를 생성하고 python manage.py startapp news 명령어를 이용해 news 어플리케이션을 추가해줍니다 ! 1. news/models.py 작성 class Article(models.Model): #author = models.ForeignKey(Journalist, on_delete=models.CASCADE, related_name="articles") author = models.CharField(max_length=120) title = models.CharFi..
Django Rest Framework Django 안에서 RESTful API 서버를 쉽게 구출할 수 있도록 도와주는 오픈소스 라이브러리 웹 브라우저 API는 개발자들에게 유용성을 가져다 준다 Serialize 기능 제공 (DB Data -> JSON) Serialization은 ORM과 non-ORM 데이터 소스를 모두 지원 View를 커스터마이징 해서 사용할 수 있다 관련 도큐먼트가 많다 DRF의 큰 기능은 Models를 serializers로 변환하는 것 - Serializer(직렬화) Serialize: 추상적인 Object를 구체적이고, 저장가능하고, 전송가능한 텍스트 파일로 바꿔주는 것 말 그대로 직렬화하는 클래스로서, 사용자의 DB안에 사용자 프로필 사진, 이메일, 이름, 성별이 있다고 가..
- Total
- Today
- Yesterday
- Spring
- 파이썬
- 백준
- 스프링MVC
- 3차 데모데이
- dm-zoned 코드분석
- CI/CD
- ZNS
- ZNS SSD
- 런칭 페스티벌
- 8주차 회고
- dm-zoned
- 회고
- java
- 피움 6주차 회고
- 환경 별 로깅 전략 분리
- 알림개선기
- 2차 데모데이
- 팀프로젝트
- 네트워크
- 프로젝트
- jpa
- 스프링 Logback
- 우테코 회고
- 피움
- 5주차 회고
- 우테코
- 스프링 부트
- 알림기능개선기
- 스프링 프레임워크
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |