작년에 장고(Django) 프레임워크로 프로젝트를 진행하면서 공부했던 개발 지식을 블로그에 다시 정리하려고 합니다. 개인 위키에 정리했던 것을 옮기는 수준이라, 친절한 설명은 기대하기 어렵고, 프로그래밍 언어와 파이썬 지식이 어느정도 있어야 이해할 수 있을 것입니다.
아래 내용들은 Django 1.6~1.7 버전을 기준으로하고, "쉽고 빠른 웹개발 Django"란 책에서 1/3, 공식 위키에서 1/3, 그리고 나머지는 구글링을 바탕으로 정리한 지식입니다. 말투가 존대와 반말이 섞여있어도 이해바랍니다 :)
장고(Django) 개발 환경 구축에 대한 포스팅도 참고해주세요.
1 Django 시작
2 장고의 MVC 패턴
3 URL 주소 설정
4 추가 및 문제 해결
1 Django 시작
프로젝트 만들기
프로젝트 명과 프로젝트 디렉토리명이 동일함.
자세한 사항은 장고(Django) 개발 환경: 윈도우 개발PC에 설치하기 참고.
프로젝트 파일 기본 구성
프로젝트 기본 설정
settings.py 에서 DB, 언어, 시간 등의 프로젝트의 기본 설정을 할 수 있다.
앱 만들기
하나의 프로젝트 아래에 다수의 앱을 만들 수 있는데, 장고에 이미 만들어진 앱을 사용할 수도 있고 사용자가 새로운 앱을 만들 수도 있다.
사용자가 새로운 앱을 만드는 경우,
앱 생성 후, settings.py에 등록
2 장고의 MVC 패턴
장고도 다른 웹 프레임워크와 같이 MVC 패턴을 가지지만 용어가 다르기 때문에, 헷갈리지 않도록 주의하자. (장고 MVT = 기존 MVC)
- 장고의 Model = Model
- 장고의 View = Controller
- 장고의 Template = View
모델 (Model)
DB 구조를 설정하는 컴포넌트로, ORM 방식을 사용하여 SQL문을 직접 사용하지 않고 파이썬 객체로 접근하기 때문에 실제 DB와 거의 완벽하게 분리된다.
models 패키지의 Model 객체를 상속받는 클래스가 하나의 DB 테이블을 의미하며, 특정 Field 클래스의 인스턴트로 생성되는 변수들이 해당 테미블의 필드가 된다.
- 필드 타입과 필드 옵션
- 메타 옵션
- 모델 관련 함수
- 모델 관련 콘솔 명령
뷰 (View)
뷰란, 데이터를 입력받거나 표시하는 컴포넌트로, MVC 패턴에서는 Controller에 속함
- 뷰에서 템플릿을 컨트롤하는 방법
- 뷰의 함수와 특정 URL을 연결시켜주는 urls.py
템플릿 (Templates)
템플릿이란 디자인 영역의 분리 및 재사용성을 높이기 위해, HTML 구조만을 따로 모아놓은 것으로 {{ 변수 }}, {% 태그 %}와 같은 방법으로 뷰에서 제어함
- 템플릿 변수와 필터
- 템플릿 태그
- 템플릿 주석처리
3 URL 주소 설정
뷰의 함수와 특정 URL을 연결시켜주는 역할을 urls.py에서 수행한다.
주소 패턴으로는 정규 표현식(Regular Expression)을 사용함.
4 추가 및 문제 해결
파이썬 2.x 버전에서 한글 사용시,
모든 py파일의 최 상단에 아래 utf 관련 문구를 꼭 표기해야 함.
간단한 디버깅을 위한 명령
sys.stdour, sys.stderr 등을 사용하여 콘솔에 데이터를 찍어볼 수 있음
'Settings' object has no attribute 'SITE_ID' 오류
settings.py에 'django.contrib.sites' 앱을 선언하면, SITE_ID 변수를 선언해줘야 오류가 나지 않는다.
'IT > └ 장고(Django) 개발' 카테고리의 다른 글
장고(Django) 개발: 사용자 관리 (0) | 2015.01.10 |
---|---|
장고(Django) 개발: MVC 패턴, 템플릿(Template) (0) | 2015.01.10 |
장고(Django) 개발: MVC 패턴, 뷰(View) (0) | 2015.01.10 |
장고(Django) 개발: MVC 패턴, 모델(Model) (0) | 2015.01.09 |
장고(Django) 개발 환경: 이클립스 설치 및 설정하기 (0) | 2015.01.06 |
장고(Django) 개발 환경: 윈도우 개발PC에 설치하기 (0) | 2015.01.06 |
장고(Django) 개발 환경: 리눅스에서 아파치 웹서버로 돌리기 (0) | 2015.01.06 |
장고(Django) 개발 환경: 리눅스 운영서버에 설치하기 (2) | 2015.01.06 |