지난 번 내가 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..
API 서버를 만들때 가장 염려스러운 부분은 Cross Domain 이슈다. 그도 그럴게 Ajax 통신(Asynchronous Javascript XML)을 통한 데이터 송수신에서 대부분 발생하는 이슈는 Cross Domain 이슈라서 그렇다. 이 부분을 해결하기 위해서는 서버사이드 내에 Cross Domain을 허용하기 위한 처리가 되어있지 않으면 통신자체가 원천적으로 봉쇄되기 때문이다. 예를 들어 지난번에 우리가 만든 API 중에서 게시판 타입 목록을 가져오는 API를 연동해보겠다. Angular.js 프로젝트를 이용해서 코드를 대충 작성해보면 아래와 같다.(Angular.js 프로젝트 만드는 법을 모를땐 여기를 클릭해라) 이렇게 작성한 뒤에 django 서버를 기동하고 angular도 ng star..
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가 있는 줄도 모르게 데이터를 저장하고 수..
석달만에 다시 찾아온 블로그에 마지막 글이 Django 환경셋팅 두번째 이야기라니.뭐라고 썼는지 쭉 한번 읽어보니 지금 새로 업데이트된 환경셋팅용 bootstrap 하고 내용이 다른 부분들이 있어서 새로 정리의 필요성이 느껴졌다. 그리고 이번에 Django관련 프로젝트를 진행하면서 얻어낸 노하우도 함께 배워보는 시간을 가져보도록하자. 치밀어 오르는 현기증은 잠시 내려두고 django-bootstrap 을 사용하기 위한 기본 환경 조건을 알아보도록 하자. 운영체제 : Windows10 (리눅스/맥용 개발환경은 차차 개발 예정, 맥용 환경은 일단 맥북을 구입해야 하므로 언제가 될지 알 수 없음) 기본 IDE : Visual Studio Code기본 터미널 : cmd 터미널 (Visual Studio Code..
오늘의 내용을 시작하기전에 환경설정하는 파일을 정말 엄청 매달려서 작업을했다.해당 파일은 https://github.com/igna84/django-bootstrap 에 가면 확인할 수 있고 이 내용은 앞으로도 계속 작업을 진행할 예정이다. 이 개발환경 설정은 기본적으로 Windows 10 에서 개발하는 개발자를 목적으로 개발된 소스임을 먼저 공유한다.두번째로 PyCharm용 설정이 아니라 Visual Studio Code용 개발환경 셋팅 파일들이다.마지막으로 나는 배치파일작성을 처음 해봐서 이렇게 하는게 맞는지 잘 모른다. 그냥 여기저기 뒤져가면서 만들었다. 이걸 통합해서 하나의 명령으로 만들고 싶지만 그건 그것대로 귀찮은 작업이고 내 본업이 아니라서 앞으로 내 필요에 맞춰서 업데이트를 할 생각이다.하..