파이썬으로 웹 개발을 한다면 보통 플라스크나 장고를 사용하게 된다. 이제 장고가 대체 무엇이고, 사용해야 하는 이유에 대해 알아보자.장고란 파이썬에서 웹 개발을 도와주는 웹 프레임워크 중 하나이다. 웹 프레임워크란?웹 개발에 공통적으로 필요한 기능(사용자 인증, 세션
장고에서 URL 패턴을 정의할 때 항상 끝에 /가 오는 것을 볼 수 있다. 이는 웹 서버 및 사용자 경험을 개선하기 위해서이다. 예전에는 슬래시가 있으면 디렉토리, 없으면 파일을 의미했지만, 현재에는 라우팅과 데이터베이스로 데이터를 가져오기 때문에 URL과 디렉토리
사람이 몸이 아프면 병원에 간다. 동네 병원에선 바로 의사를 만날 수 있지만, 종합병원의 경우에는 로비에서 환자들을 분류해 증상과 관련된 과로 연결해 준다. 도착한 환자들은 각자 자신의 증상을 말하고, 진찰 후 증상별로 다른 처방을 받아 돌아갈 것이다.장고의 라우팅 방
웹 프로젝트를 진행하다 보면 데이터베이스가 필요해질 때가 온다. 유저의 정보, 유저가 작성한 글, 장바구니, 구매 내역 등 데이터가 많아지면 이를 데이터베이스에 입력하고 이를 바탕으로 서비스를 제공하게 된다.그런데 서버가 데이터베이스와 직접 통신하는 것은 그다지 바람직
이런 상황을 생각해보자. 아래 코드는 포스팅을 위한 장고 URL 패턴을 만들고 HTML 문서에 개별 포스트 링크를 만들어 제목을 클릭하면 해당 포스트의 페이지로 이동하는 것을 구현했다.이 상황에서 만약 URL 패턴을 변경해야 한다고 생각해 보자.post/detail/1
장고는 데이터베이스를 추상화한 모델로 파이썬 클래스를 사용한다. 클래스의 멤버 변수로 테이블 스키마를 정의하고 클래스의 인스턴스인 객체를 튜플로 간주한다. 스키마를 정의하기 위해서는 앱 설계를 먼저 생각해야 한다. 예를 들어, Todo 리스트를 작성하는 사이트를 만든
장고에서 URL패턴에 이름을 부여해서 사용하는 방법이 있다는 것을 알았다. 파이썬 코드에서는 어떻게 사용할까? 바로 예제를 보자. 이렇게 작성하면, 네임스페이스를 생성할 수 있다. 상세페이지, 생성, 업데이트 기능을 위한 URL 패턴을 설정하고 이름을 부여해 주었다
장고의 뷰 함수를 작성하다 보면 공통적으로 사용되어야 하는 기능들이 있다. 한 예시로, 특정 기능들은 보안이나 권한에 대한 검증이 항상 필요할 수 있다.게시판을 만들었다고 생각해보자. 게시판의 글을 보는것은 로그아웃된 상태에서도 가능하지만 게시판에 글을 쓰거나 추천을
장고 ORM을 사용하다 보면 쿼리셋을 이용해서 쿼리를 처리하게 된다. 그런데 조금 이상한 것이 있다. 예를 들어, 아래 코드를 보자. 직관적으로 생각하면 실행 흐름은 data에 모든 데이터가 반환되어야 할 것 같다. 하지만 출력해보면 data역시 쿼리셋이다. 왜 OR
장고에서는 ORM을 사용해 데이터베이스에 접근할 수 있다. 이렇게 쿼리를 직접 작성하지 않고 API 메서드를 이용해서 데이터베이스와 통신을 추상화하는 객체를 쿼리셋(QuerySet)이라고 한다. MyModel.objects과 같이 특정 모델의 뒤에 .objects를
쿼리셋은 정말 편리하게 데이터베이스를 다룰 수 있게 해주지만 비효율적으로 많은 쿼리를 날릴 가능성이 있다. 예를 들어서, 다음과 같은 모델이 있다고 생각해보자. 한 명의 작가가 많은 책을 집필할 수 있으므로 책과 작가는 다대일 관계이다. 따라서 책이 작가를 FK로 갖
장고에서 pagination을 구현해보자. 하나의 페이지에 지나치게 많은 콘텐츠가 존재할 때 여러 문제가 생길 수 있다. 데이터베이스에서 지나치게 많은 데이터를 가져와야 하고, 프론트에서 많은 요소를 렌더링하다 보면 페이지 로드 속도가 저하되고 스크롤이 지나치게 길어진
장고에서 특정 사용자에게 권한을 주고 싶은 경우가 있다. 가령, 커뮤니티에서 모든 글을 삭제하거나 수정할 권한을 가진 관리자 유저가 필요한 경우가 있을 수 있다.이런 경우, 다음과 같은 방법을 사용해서 권한을 부여할 수 있다.커스텀 유저 모델에서 PermissionsM