본문 바로가기

728x90

Frame Work

(43)
[Django] app의 model만 관리하는 app을 만들어보자 개요 django의 model을 사용하다 약간의 불편함이 생겼습니다. 생성한 app의 models.py에서 model을 선언해서 사용하다 보니 app이 많아 질수록 여기저기 오가면서 테이블을 뒤져봐야 한다는 점이었습니다. Two Scoops of Django라는 책에서는 작은 단위의 app으로 관리하는 방법을 적용하라고 하던데 이에 반대하는 호기심으로 테이블을 한 곳으로 몰아넣고 그곳에서만 관리를 해보면 어떨까 하는 생각을 해봤습니다. 목적 앞서 언급했듯 목적은 한 폴더에서 models를 관리할 수 있는 것입니다. 잠시 고민한 뒤 다음과 같은 방법을 사용해보기로 했습니다. core/models/__init__. py 만들고 테이블마다 파일을 생성한 뒤 라이브러리화 시켜보자 Setting 하기 sqlit..
django, ForeignKey N+1 Forign Key 참조를 사용해보다가 발견한 현상 아래 두 모델은 DRF를 익히기 위해 만든 모델이다 class User(AbstractBaseUser, PermissionsMixin): email = models.EmailField(max_length=255, unique=True) password = models.CharField(max_length=128) objects = UserManager() USERNAME_FIELD = "email" REQUIRED_FIELDS = [] class Feed(models.Model): id = models.BigAutoField(help_text='Feed ID', primary_key=True) user_id = models.ForeignKey("User..
django, timezone에 관한.. Example : Last_Login ! django의 user model은 last_login이라는 필드를 지원한다. 해당 유저가 마지막에 로그인한 시간을 기록하는 테이블이다. Simple JWT는 토큰을 발급할 때 TokenObtainPairSerializer를 이용하는데 이 Serializer를 타고 타고 들어가다 보면 django의 FrameWork의 update_last_login 메서드를 가져다 쓰고 있다. # /django/contrib/auth/models.py def update_last_login(sender, user, **kwargs): """ A signal receiver which updates the last_login date for the user logging in. "..
[Spring Boot] Getter, Setter 목차 " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스DTO를 알아보자DTO, DAO는 Spring Boot를 다루기에 앞서 필수적으로 알아야 하는 개념이다. 그중 DTO는 데이터를 객체로 변환한다는 의미를 가진다. 조금 더 이해하기 쉽게 코드 관점으로만 봐보자.  다음과 같은 테이블이 있다. 위의 테이블은 MySQL에서 제공하는 샘플 스키마 중 classicmodels DB의 employees 테이블이다. 필드에 정의된 레코드들을 Java로 가져다 쓰려면 어떻게 해야 할까? 단순히 이 테이블에 있는 모든 데이터를 가져오는 쿼리를 날려서 사용할까? 비용이 너무 크고 소모적이라 생각된다. 그래서 이 테이블에 대응하는 다음과 같은 class를 만들어 사용한다.그래서 언제 사용될까..
[Spring Boot] 시작하기 목차 " data-ke-type="html">HTML 삽입미리보기할 수 없는 소스개요Django나 Flask를 사용하다 보면 레이어드 아키텍처를 적용해서 개발을 진행한다. Django의 MVT라는 패턴으로 사용하고 Flask는 구성하기 나름이다. 그런데 레이어드 아키텍처를 사용하다 보면 하나씩 부족한데 라는 생각이 들기 시작한다. 계층 간 데이터 교환이나 특정 로직이 어디에 위치해야 하는지 그리고 레이어 수준을 어느 정도로 가져갈지에 대한 고민들이다. 이에 관련돼 무엇을 공부하면 될까라는 고민을 가지고 있었는데 문득 이름만 들어본 Spring이 생각났다.  Spring/SpringBoot를 공부하면 백엔드 아키텍처를 구축하는데 조금 더 넓은 시야를 볼 수 있지 않을까 싶다. Spring Boot 생성하..
django.db.utils.DataError: (1366, "Incorrect string value: ~~~) 개요 집에서는 docker를 통해 MySQL 컨테이너를 쓰고 있다. 호스트 컴퓨터는 windows 10, docker를 쓰고 있는 운영체제는 VMware에다 ubuntu 20.04를 올려서 사용하고 있다. windows에서 postman을 통해 ubuntu에다 post() 요청을 수행했을 때 다음과 같은 에러가 일어났다. /etc/my.cnf 수정하기 해결방법은 /etc/my.cnf 파일에 아래의 내용을 추가함으로 써 해결할 수 있었다. [client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci init-connect='SET NAMES utf8' charac..
django.db.utils.OperationalError: (1060, "Duplicate column name) github 저장소에 올려놓은 코드를 pull을 받고 다시 migrate를 하는 과정에서 에러가 일어났다. showmigrations 명령어는 잘 수행되는 것 같지만 migrate를 줄 때 에러가 일어나니 아무래도 migrate 파일을 다시 사용하는 과정에서 에러가 일어나는 듯 보였다. 처음 생각 난 해결방법은 다음 두 개다. 1. migrate 파일을 지울 것 2. 데이터베이스를 초기화하는 것 두 가지 방법 다 실제 운영 환경이었으면 이런 식으로 처리하는 게 말이나 될까 싶을 정도의 대처방법이지 않을까 하는 의심과 함께 다른 방법이 있지 않을까 찾아봤는데 Django에서는 migrate를 할 때 문제가 일어나는 app에 fake 옵션을 줌으로써 해결할 수 있다는 글을 보았다. $ python manag..
setting.AUTH_USER_MODEL Error AbstractBaseUser를 상속해 makemigrations를 하던 도중 다음과 같은 에러 납니다. 이것저것 알아보다 settings.py 에 셋업 한 커스터마이징 유저 모델을 다른 앱에서 상속받을 수 있게 하라는 글을 발견했습니다. 제 경우에는 다음과 같은 app에서 user를 사용하고 있었습니다. 그래서 커스터마이징 한 유저 모델과 Foregin Key로 설정을 다시 해주었습니다. 이후 makemigrations를 시도하니 정상적으로 실행됩니다. 참조한 stack overflow link stackoverflow.com/questions/55780537/how-to-fix-field-defines-a-relation-with-the-model-auth-user-which-has-been-s/55..

728x90
반응형