프로젝트를 진행하면서 timezone 모듈과 datetime 모듈을 사용하였는데, 두 개다 시간을 다루는 모듈이라고만 인지하고 있었고 무슨 차이가 있는지 어떤 장단점이 있고 어떤 상황에 사용해야 하는지 잘 이해를 하지 못한 채로 사용하고 있었는데, 아무래도 정리가 필요한 것 같아서 찾아보니 생각보다 큰 차이점이 있었다.간단히 이야기하자면, datetime은 날짜와 시간 정보를 다루는 데 사용되고,datetime에 추가적으로 timezone은 시간대 정보를 관리하는 데 사용된다. 시간을 처리할 때 시간대는 왜 중요할까?다른 프로젝트를 할 때는 잘 느끼지 못하였는데 시간대를 맞추는것은 매우 중요한 역할을 한다. 나라 또는 지역마다 살아가는 시간이 다르기 때문에 편차가 존재하는데, 이러한 시간대의 차이는 업무..
BackEnd/Django, DRF
단축 url 프로젝트를 진행하면서 조회수 관련해서 통계를 내는 부분이 있었는데, 그 부분에 관련된 예제이다. Models.pyfrom django.db import modelsfrom core.models import TimeStampedModelclass ShortURL(TimeStampedModel): user = models.ForeignKey("users.User", related_name="user_url", on_delete=models.CASCADE) origin_url = models.URLField(verbose_name="원본 url") short_url = models.CharField(max_length=100, verbose_name="단축 url") requ..
앞선 글에서, 코드에 대한 설명이 조금 부족한 것 같아서 추가적인 설명이다. [Custom] Django와 CustomJWT로 안전한 인증 시스템 구축하기웹 애플리케이션 개발에서 인증은 매우 중요한 부분이고, JWT는 웹과 API에서 인증 및 권한 부여를 효율적이고 안전하게 관리해주는 매우 유용한 인증 기법이다. 처음 JWT에 대해서 공부하고 적용jongseoung.tistory.com CustomJWTAuthentication 클래스와 CustomJWTBackend 클래스는 둘 다 JWT 토큰을 사용한 인증을 수행하지만, 사용되는 시점과 방식에 차이가 있다. CustomJWTAuthentication역할CustomJWTAuthentication 클래스는 미들웨어로 사용되어, 요청(Request)이 Dj..
프로젝트 소개DRF를 독창적이고 개인화된 설정으로, 처음 Django를 접할 때 사용하는 기본적인 설정에 관한 내용은 공식 문서에 많지만 막상 프로젝트를 진행하기 전에는 파일 구조부터 공식 문서의 내용과는 많이 달라졌고, 이후 프로젝트에서 initialize_django를 복사해서 편리하기 진행할 수 있도록 하는 것을 목표로 했다. 기술 스택Python 3.11Django 5.0.4Django REST Framework 3.15.1CommunicationGithbNoctionDiscord 구현 기능AUTH: JWT를 이용하여 인증 및 권한 관리BOARD: 기본적인 CRUD환경 변수 관리: Django-environ 사용보안적인 요소를 고려하여 환경 변수를 효율적으로 관리민감한 정보(예: 데이터베이스 비밀..
과거 프로젝트에서 클래스별 공통되는 부분을 따로 BaseClass로 만들어서 상속받아서 사용했던 기억이 있는데, BaseClass를 만들어 관리하니 고정된 계층, 즉 상속으로 인해 유연성이 떨어지는 단점이 있었고 조금만 복잡해지면 스파게티 코드가 될것같다는 생각이 들었었는데 이번에 Mixin이라는 개념에 대해서 자세히 공부하면서 얼마나 멍청하게 구현했었는지 생각하게 되었다. Mixin은 클래스 기반 뷰에서 자주 사용되는 개념으로, 다중 상속을 통해 재사용 가능한 코드를 작성하고 클래스 간에 공통 기능을 공유할 수 있도록 한다. Mixin은 단독으로 사용되기보단 다른 뷰 클래스와 결합하여 사용된다. 이글에서는 Logging Mixin을 이용해서 CRUD Mixin에 믹스인을 적용시키고 View가 처리될때마..