drf 6

[Backend] 정리 - 1

□ Model 필드 부분 update 포스트 방문 수 측정을 위해 Post 모델의 hits라는 필드를 가지고 있다. class Post(models.Model): ... hits = models.BigIntegerField(default=0) updated_at = models.DateTimeField(auto_now=True) ... 정말 많은 사람들이 방문하고 그랬다면 Redis 서버를 별도로 두어서 카운팅을 하고 스케줄러를 통해 주기적으로 DB에 업데이트해줬을 것이지만 여기서는 그런 주제의 글이 아니기에 패쓰 단순하게 사람들이 방문하면 +1씩 값을 증가시켜주는데 아래와 같이 그냥 save를 호출할 경우, DB에 전체 필드를 그대로 업데이트하게 된다. def retrieve(self, request,..

Intro.

전에 회사다닐 때, 도메인까지 구입하여 블로그를 만든 적이 있었다. (지금은 정말 다양하고 편리한 기능을 제공하는 블로그 사이트들에 반해 진작 접었지만..) 처음 만들었을 당시에는 그래도 내가 직접 만든 사이트에 장기간 좋은 글을 계속 쓴다면 나름 나만의 브랜드 사이트를 만들 수 있다는 상상을 했었던 것 같다. (꿈만 컸네.. 쩝.) 지금은 티스토리에 이렇게 글을 쓰지만 아... 너무 좋은 것 같다. Django Admin에 Ckeditor 붙여서 사용할 때는 뭐 나름 나쁘지는 않았지만 별도 추가 개발을 안하고 너무 기본 기능만 쓰다보니 비교가 되는 건 어쩔 수 없나보다. 이젠 사용하지 않으니 소스코드를 공개로 전환하는 과정에서 조금 고치고 싶은 욕구가 샘솟아 몇 가지를 고치고 전환하였다. 참고로 처음 ..

[Backend] 정리 - 3

□ JSONField Test Case 이전 포스트에서 JSONField를 이용하여 2가지 형태를 이용했었습니다. Case 1 : { "data" : [ "취미 1", "취미 2", "취미 3"] } Case 2 : [ "취미 1", "취미 2", "취미 3"] 각각 테스트 케이스를 작성하여 발생했던 문제점을 보겠습니다. 테스트 케이스는 아래와 같이 작성되었습니다. (핵심 코드만 보기 위해 로그인이나 이런 부차적인 것들은 제외시켰습니다.) class UpdateProfileTestCase(APITestCase): def setUp(self): … def test_can_update_profile(self): data = { … "passions": {"data": ["축구", "야구"]}, } respo..

[Backend] 정리 - 2

□ Django User Model 이 부분은 사람마다 의견이 다를 것 같네요. 보통 장고에서 User Model 계획할 때, 3가지 방법을 사용합니다. 기존 User를 Foreign Key로 연결 (OneToOneField 이용) User 모델을 완전 새로 정의 (AbstractBaseUser 상속) User 모델에 필드 추가 (AbstractUser 상속) 제가 일하면서 들었던 조언 중 하나는 장고 프레임워크를 너무 변형시킬 경우, 다른 패키지(3rd party)를 이용할 때 문제 발생할 가능성이 높아진다. 최대한 프레임워크 기초를 건들지말고 있는 그대로 사용하는 것이 좋다. 라는 것이었습니다. 그래서 이 프로젝트도 OneToOneField를 이용하여 Profile 테이블을 만들었습니다. 이 부분에 ..

[Backend] 정리 - 1

앱별로 상세 설명을 진행하려고 하다가 큰 의미가 없는 것 같아서 프로젝트 진행하면서 기록하고 싶은 점이나 특징점을 쓰기로 하였습니다. □ TimeStampedModel class TimeStampedModel(models.Model): updated_datetime = models.DateTimeField(auto_now=True) created_datetime = models.DateTimeField(auto_now_add=True) class Meta: abstract = True 대부분의 모델에서 생성일과 수정일 필드는 존재하기 때문에 추상클래스 TimeStampedModel을 상속받아 모델들을 생성하였습니다. 추상클래스 TimeStampedModel을 상속받은 휴대폰인증 이력 모델 class Ph..

Intro.

안녕하세요? 뼈빌런 블로그의 뼈빌런입니다. 직장에서 퇴사하고 작게나마 토이 프로젝트를 만들어서 관련하여 블로그 글을 써볼까 합니다. 다른 분들에게 도움이 되면 좋지만 저 역시 배웠던 내용도 정리할 겸 나중에 잊어버릴 경우, 다시 찾아보고 빠르게 이해하기도 좋구요. 진행한 프로젝트 대략적인 개요는 아래와 같습니다. 프로젝트명 : Red Horse (Backend) 분류 : 온라인 데이팅 언어 : Python 3.11 프레임워크 : Django 4.2 + Django Rest Framework 3.14 형상주소 : https://github.com/kimfame/redhorse 온라인 데이팅 서비스. 말이 은근 거창해서 부담스럽긴하나 간단하게 매칭해서 채팅방 만들어주는 서비스라고 보면 될 것 같네요. 대규모..