오늘은 페이징 두번째 클래스인 LimitOffsetPagination을 알아보도록 하자. 이 클래스의 특징은 PageNumberPagination과는 조금(?) 다른 인터페이스를 갖고 있는데 PageNumberPagination은 클래스 이름과 마찬가지로 페이지 숫자와 page_size 파라미터를 전달하면 페이징 처리를 간편하게 해결해줬는데 LimitOffsetPagination도 마찬가지로 Limit과 Offset 파라미터를 전달하면 페이징 처리를 해준다는 이야기다. 뭐라고 말은 하긴 했는데 무슨 소리인지 모르겠다면 내가 늘 하는 이야기. 아래의 코드를 참고해보자. board-type/view.py 파일을 지난번 버전에서 수정했다. from django.shortcuts import render fro..
지난 번 내가 Django + Restframework에서 지원하는 검색기능으로 filter_fields와 search_fields를 이야기하면서 나의 멘탈이 증발한 것을 이야기했다. 뭐, 나쁜 기능은 아니다. 나름 개발 속도를 높이기 위한 방법으로 약간 ㅂㅅ같은 길로 들어섰을뿐 아주 단순한 방법으로 아주 빠르게 자동으로 기능을 구현해주지만 성능은 책임지지 않는 뭔가 반쪽짜리 API를 만들어도 괜찮을 때는 괜찮은 방법이다. 하지만!! 그런데!! 이런 것으로는 안되는게, 만약에 높은 성능을 요구하는 프로젝트에서 Django로 프로젝트를 진행하는 경우는 드물지만 만약에 진행을 하게 된다면 온 사방에서 성능 이슈로 문제들이 펑펑 터지는 일이 생기게 될 거라는 사실이 너무나도 분명하다. 먼저 이야기했던 filt..
모름지기 웹 개발에 있어서, 웹 개발에서도 게시판을 개발하는데 있어서 가장 큰일 중에 하나는 Paginate라는 기능일 거다. 뭐, 검색기능도 있긴한데 그건 비즈니스 레이어(Business Layer: 데이터의 처리를 위한 서비스계층)에서 처리하는 거라기보다는 파시스턴스 레이어(Persistence Layer: 데이터의 영속성을 관리하는 계층)에서 처리하는 내용이라 난이도로 치면 아무래도 Paginate(이하 페이징)가 손이 많이 가고 할 일도 많고 귀찮은 일이 많다. 그래서 페이징을 먼저 처리하려고 생각해보면 아이러니하게도 검색부분이 먼저 선행되어야하는 이슈가 생긴다. 왜 그런지 잠깐 설명하자면 페이징의 기능을 차근차근 생각해보면 이해가 된다. 페이징을 만들때 가장 중요한 것은 게시글의 전체 카운트를 ..
우리는 지난시간 Django Restframework를 이용해 만든 게시판 타입을 저장하고 노출하는 board-type이라는 API를 만들고 연동하기 위해 CORS 셋팅까지 마쳤다. 이제 Angular를 통해서 CRUD 전체 기능을 구현하고 조금 더 복잡한 기능을 구현하기 위한 발판을 만들어볼거다. 오늘은 별말 없이 그냥 코드만 줄줄이 올려야지. app.component.html 추가하기 Type Description 추가 게시판 타입 목록 ID Type Description Created Updated {{item.id}} {{item.type}} {{item.description}} {{item.created_at| date: 'yyyy-MM-dd HH:mm:ss'}} {{item.updated_at..
Django에서 Model과 Migrate는 웹 사이트를 개발하는데 있어서 굉장히 자주 사용되며 이와 동시에 Serializers는 정말 수도 없이 작성하게된다. 뭐 사실 저 세가지를 다 깨달아도 view.py 의 GenericView 앞에서는 모두들 무릎꿇겠지만... 어쨌은 오늘 할 이야기는 GenericView는 아니니까 가볍게 Model과 Migrate, 그리고 Serializers의 간단한 예제를 접해보도록 하자. (GenericView는 마지막에 잠깐(?) 이야기 할거다. 나중에 아주 자세하게 다뤄야하는 챕터가 등장한다. 거기서 자세히 알아보자) 일단 처음으로 할 일은 DB의 테이블을 만들건데 어떤 테이블을 만들거냐 하면 간단하게 게시판의 타입을 저장하는 테이블을 만들어보도록 하겠다. 테이블의 ..
오늘은 API 서버를 만드는 첫 걸음. Django restframework 라는걸 배워보도록 하겠다. 시작하기 전에 잠깐 썰을 풀자면 내가 평생 JAVA만 하다가 처음 이 놈의 restframework 를 접했을때 내가 개발을 처음 시작했을 때가 생각이 날 정도로 멘탈이 탈탈 털렸다. 언어 자체가 어려운게 아니라 도저히 개념이 안잡히는거다. 기존의 JAVA나 C#.NET 을 했을 때 같은 전통적인 형태의 개발 언어만 다뤄본 나로써는 Django의 철학을 이해할 수가 없었다. 책을 몇권 다시 읽고 블로그를 탐색하고 Django 가이드 문서들을 탐독하고서 이제야 그럭저럭 이해하는 중이다. 일단 Django는 기본적으로 Django 서버와 DB가 엮여있어야 하고 DB가 있는 줄도 모르게 데이터를 저장하고 수..