장고 프레임 워크로 개발하기 위해서는 개발환경 세팅이 필요하다이미 세팅이 끝난 시점이지만 추후 다시 세팅이 필요한 경우를 위해 개발환경 세팅 과정을 정리한다.개발환경 세팅은 총 6가지 과정으로 나뉜다.VScode 설치는 간단하니 별도로 설명하지 않겠다. 다만 설치 후
장고로 프로젝트를 생성하고 관리하는 방법을 확인한다.새로운 프로젝트 생성을 위해 디렉토리를 하나 생성한다. 디렉토리는 폴더를 말한다.생성된 디렉토리로 이동한다.생성해둔 가상환경을 생성한 디렉토리에 적용하고 가상환경이 잘 적용됐는지 확인한다.프로젝트를 생성하기 위해 장고
python manage.py runserver로 실행하는 서버는 개발 서버로 불린다. 이유는 보안과 관련된 사항이나 성능을 보장하지 않는, 확인용 서버이기 때문이다. 따라서 배포는 웹 서버를 통해 진행해야 하며, 웹 서버 배포는 별도의 포스팅을 통해 설명할 것이다.p
장고의 프로젝트 구조를 살펴본다django-admin startproject ABC 명령어로 프로젝트를 생성하면 다음과 같은 구조로 생성된다. 여기서 최상위 디렉토리를 프로젝트 루트 디렉토리라고 한다.프로젝트 생성 시, 프로젝트 루트 디렉토리 내부에 있는 디렉토리를 프
장고에서 프로젝트는 각각의 독립적인 앱으로 구성되어 있다. 즉, 앱은 각각의 기능을 담고 있는 디렉토리를 말한다.앱을 생성하기 위해서는 프로젝트 루트 디렉토리로 이동해야 한다. 프로젝트 루트 디렉토리가 무엇인지 생각나지 않는다면 Django 프로젝트 구조 포스팅을 참고
이전 포스팅에서 앱 디렉토리를 생성했다. 지난 Django 프로젝트 구조 포스팅에서 프로젝트 디렉토리 구조를 설명한 것처럼, 이번에는 앱 디렉토리 구조에 대해 설명하겠다.앱 디렉토리가 잘 생성되었다면 다음과 같은 구조로 이루어져 있을 것이다. 각 파일과 디렉토리에 대해
장고의 기본 철학은 재사용성이 있는 앱을 만드는 것이다.하나의 앱에 여러 기능을 넣기 위해 긴 줄의 코드를 입력하는 것이 아닌, 하나의 앱은 하나의 기능만 수행하고, 다양한 앱을 서로 연결하여 사용할 수 있는 방식으로 개발하는 것이다. 초보인 우리가 재사용성이 있는 앱
유저가 브라우저의 주소(url)을 입력하면 장고는 urls.py 파일에 정의된 로직에 따라 처리한다. 프로젝트 구성 디렉토리의 urls.py 파일을 확인해보자유저가 url을 입력하면 가장 먼저 프로젝트 구성 디렉토리의 urls.py 파일을 확인한다. 프로젝트 구성 디렉
지난 포스팅에서 APP1 이름의 앱 디렉토리를 생성하고, 프로젝트 구성 디렉토리의 urls.py에서 url 패턴을 아래와 같이 추가했다.그러나 이 경우 127.0.0.1:8000/ 으로 접속하면 에러 페이지가 나타난다.이유는 프로젝트 구성 디렉토리의 urls.py 파일
지난 포스팅에서 views.py 를 아래와 같이 정의했다.요약하자면, 127.0.0.1:8000/APP1/index 로 접속하면 index 함수를 통해 '안녕' 이 출력된 페이지로 응답하는 것이다.views.py 파일에 모두 작성하기에는 코드의 길이가 길어지고, 지저분
이전 포스팅에서 템플릿의 샌드위치 구조에 대해 설명했다. 정적파일 또한 템플릿과 마찬가지로 샌드위치 구조를 통해 관리해야 한다.정적파일, 즉 스태틱 파일은 템플릿과 마찬가지로 샌드위치 구조로 관리해야 한다. 앱 디렉토리 내부에 static 디렉토리 생성하고 앱 디렉토리
장고에서 사용할 수 있는 템플릿 언어는 템플릿 변수 템플릿 태그 템플릿 필터 템플릿 주석 4가지로 구분된다.중괄호 2개로 감싼 형태로 사용하며, 템플릿이 렌더될 때 우리가 지정한 결과로 변환한다. 즉, view에서 변수에 데이터를 넣어 템플릿에 전달하면 html 파일에
페이지의 수가 늘어남에 따라 중복되는 코드를 모두 입력하는 번거로움을 해결하기 위해 장고의 템플릿 상속 기능을 사용하는 방법을 설명한다.템플릿 상속은 block과 extends 템플릿 태그를 통해 사용할 수 있다.기존에 작성한 index.html과 같은 디렉토리에 부모
이전 포스팅에서 템플릿 상속을 통해 부모 템플릿으로부터 html 요소를 상속받고 상속받지 않은 내용은 block 영역을 채워넣는 방법을 배웠다. 그런데 만약 웹 페이지 수가 더 많아진다면? 모든 페이지에 대한 html 요소를 하나하나 채워넣는 하드코딩의 방식은 우리를
포켓몬 정보를 담고있는 포켓몬 도감 웹 사이트를 만든다고 가정해보자. 포켓몬 도감에는 포켓몬의 목록을 보여주는 리스트 페이지와 포켓몬의 상세 정보를 보여주는 디테일 페이지가 있을 것이다.포켓몬 도감에는 총 3마리의 포켓몬 정보를 담고 있다고 가정하면 디렉토리 구조는 다
이전 포스팅에서 동적 url 기능을 활용해 하나의 url과 연결된 하나의 view 그리고 하나의 템플릿에서 여러 페이지를 불러오고, 각 페이지별 입력된 url에 맞는 포켓몬 이름을 호출하는 방법을 설명했다. 본 포스팅에서는 포켓몬 이름 뿐만 아니라, 설명, 이미지 등을
이전 포스팅에서 주소/pokemon-book/ 다음 url을 pikachu나 charmander로 입력하여 접근하는 것과 둘다 아닌 경우에 접근하는 경우 아래와 같이 views.py 를 정의 했다. 여기서 else 문으로 정의한 즉, 둘다 아닌 경우를 의도하지 않은 접
이전 포스팅에서 views.py 파일에서 포켓몬 별로 이름, 설명, 레벨, 이미지를 불러오는 함수를 작성했다. 본 포스팅에서는 views.py 파일에 직접 작성하지 않고, 데이터를 불러오는 방법을 설명한다.pokemon-book 디렉토리 내의 models.py 파일로
모델에서 사용되는 필드를 구분하고, 각 필드의 특징을 살펴보자필드는 데이터 테이블에서의 열(컬럼), 즉 데이터의 속성을 의미한다.제한된 길이의 문자열을 위한 필드다. 필수 인자로 최대 길이를 설정해야 한다.정수 값을 위한 필드다.불린 값을 위한 필드다.datetime.
이전 포스팅에서 Poke 모델을 생성해 데이터베이스 구조를 정의했다. 이번에는 데이터베이스 구조에 맞춰 데이터를 생성해보자.shell은 장고의 유용한 기능을 사용할 수 있는 환경이다. shell 환경에 접근하기 위해 터미널에서 프로젝트 루트 디렉토리로 이동한 뒤, 아래
데이터를 조회하는 다양한 방법을 배운다.프로젝트 루트 디렉토리로 이동해 shell을 실행한다.Poke 모델을 불러온다.모든 데이터 조회하기모든 데이터의 모든 필드값 조회하기모든 데이터의 특정 필드값 조회하기오름차순 정렬 불러오기내림차순 정렬 불러오기
이전 포스팅에서 데이터베이스 구조에 맞춰 데이터를 생성하고 조회했다. 이번에는 데이터를 수정하고 삭제해본다.shell은 장고의 유용한 기능을 사용할 수 있는 환경이다. shell 환경에 접근하기 위해 터미널에서 프로젝트 루트 디렉토리로 이동한 뒤, 아래의 명령어를 입력
장고는 관리자 도구 즉, 어드민 페이지를 간단하게 만들어 준다. 본 포스팅에서는 관리자 도구를 사용하는 방법을 설명한다.터미널에서 프로젝트 루트 디렉토리로 이동 후 아래의 명령어를 입력한다.관리자 이름과 이메일, 비밀번호 입력 폼이 나오면 입력한다.개발 서버 실행 후,
최근 포스팅에서는 html 템플릿에 렌더되는 내용을 동적 웹페이지로 구현해보고, url을 문자열로 받아 if 조건문을 사용하여 포켓몬 이름, 설명, 레벨을 url 별로 다르게 호출하는 방법을 사용했다. 이번에는 직접 하드코딩 하지 않고, view에 model을 적용해
이전 포스팅에서 포켓몬리스트를 보여주는 페이지에 대한 하드코딩을 데이터를 호출하는 방법으로 변경했다. 본 포스팅에서는 포켓몬리스트에서 이동하는 상세페이지를 하드코딩에서 데이터를 호출하는 방법으로 변경한다.기존에 작성된 url 패턴을 보면 list/{url}로 접근하면
장고 프로젝트를 배포하기 위해 준비해야하는 내용을 알아본다.디버그 모드를 키면 에러 발생 시 자세한 에러 내용을 페이지에 표시한다. 너무 자세한 내용이 표시되면 보안에 문제가 될 수 있으므로, 디버그 모드를 종료해야 한다.프로젝트 구성 디렉토리로 이동해 settings
장고의 Model을 통해서 데이터베이스의 데이터를 Queryset으로 불러올 수 있다. 여기서 우리는 Model API를 통해 Queryset을 원하는 조건으로 불러올 수 있다.해당 모델 테이블의 모든 데이터 조회특정 조건에 맞는 모든 데이터 조회특정 조건을 제외한 모
웹 서비스에서 사용자가 데이터를 입력하고 서버에 전송하기 위한 방식을 말한다.CRUD 에서 Read 는 데이터베이스에서 데이터를 가져와서 템플릿으로 렌더해 사용자에게 전달하면 된다. Create 는 이와 반대로 사용자의 입력을 받고 서버로 전송해야 하는데 이때 사용되는