Python, Django
[Django]MTV 패턴
에는
2019. 10. 1. 14:56
Overview
- MTV 패턴
- T(Templates)는 유저가 보는 화면에 해당
- V(View)는 기능을 구현하는 부분
- M(Model) 테이블을 정의하는 부분. 장고는 ORM을 제공한다.
- ORM이란: Object-Relational Mapping, SQL 대신 데이터베이스를 쉽게 연결해주는 것
Django
- python 기반 웹 어플리케이션 프레임워크
- MTV 패턴
- admin 기능 제공
- 쉬운 URL 파싱 제공
프로젝트 생성
가상환경
- pip 패키지들을 독립적으로 설치
- 파이썬으로 작성된 패키지 소프웨어를 설치, 관리하는 패키지 관리 시스템
- 파이썬을 설치하면 사용 가능
- 장고도 pip 패키지 중 하나
가상환경 만들기
python -m venv myvenv
가상환경 활성화(가상환경이 있는 디렉터리에서)
. myvenv/Scripts/activate
가상환경이 활성화되면 (myvenv) 가상화활성화된 표시가 뜹니다.
장고 프로젝트 만들기
장고 패키지 설치(가상환경 켠 상태에서)
pip install django
프로젝트 생성
django-admin startproject firstproject
- firstproject 폴더가 두 개 있음
- 상위 폴더 이름 바꾸기 firstproject → first
앱 만들기
-
app은 프로젝트의 구성 단위
-
project는 app들이 모여서 구성
-
project의 기능 하나마다 app을 만들어 주는 것이 좋음
-
manage.py가 있는 폴더에서 만들기
cd first
python manage.py startapp appname
-
settings.py에 앱 등록하기
-
앱은 만들고 나면 settings.py에 항상 등록해줘야 함
-
settings.py의 INSTALLED_APPS에 'appname.apps.AppConfig' 형식으로 작성
app 내의 구조 살펴보기
Hello World 띄워보기
- index.html에 Hello World 띄우기
- templates 폴더 내에 html 파일을 만들어줍니다.
views.py에 기능 구현
- index라는 함수를 만들어줍니다. 이 함수는 요청이 들어오면 index.html 페이지를 띄워주는 역할을 합니다.
- render : 특정 html 페이지를 렌더링, 최대 3개의 인자를 받는다.
- request
- html 파일의 경로(templates 폴더 바로 아래부터)
- html 파일에서 사용할 변수를 딕셔너리 형태로 전달
urls.py에서 url 요청을 views.py로 연결
urls.py는 route입니다. 주소창에 입력된 url에 따라 views.py의 함수를 실행합니다.
urls.py에서 myapp의 views.py에 있는 함수를 사용할 수 있도록 myapp의 views.py를 임포트 합니다.
URL은 view와 template을 이어주는 역할을 하고, 이 부분을 만들어 주는 작업을 URLconf라고 합니다.
path 함수는 3가지 인수를 받습니다.
- route(도메인 뒤에 붙는 url 부분)
- 실행하고자 하는 views.py 안에 정의된 함수
- 이 path의 이름(변수)
서버 run
여기까지 하고 서버를 돌려보겠습니다.
python manage.py runserver
도메인 뒤에 index/를 붙여주면 Hello World가 뜹니다.
템플릿 변수
아까 index 함수에서 정의해준 hello 변수를 html상에 출력해보겠습니다. {{ }} 중괄호 안에 정의해준 변수를 넣으면 됩니다.
그러면 변수가 잘 출력됨을 확인할 수 있습니다.
정리
- M : DB 저장 형태를 설계하는 부분
- T : 사용자에게 보이는 부분
- V : 로직을 설계하고 기능을 구현하는 부분, 데이터를 처리하고 가공하는 부분
- URLconf : 유저가 보는 화면으로 전환해주는 부분. 입력한 도메인에 따라 views.py의 함수를 실행하는 곳