장고
개발 환경
- wsl 우분투 설치
Windows 기능 켜기/끄기 에서 Linux용 Windows 하위 시스템 항목에 체크 후 재부팅
우분투 설치 - pyenv, pyenv-virtualenv설치
pyenv를 설치하면 pyenv-virtualenv도 같이 설치된다.
curl https://pyenv.run | bash - echo $SHELL 로 확인해서 Bash Shell이면
sed -Ei -e ‘/^([^#]|$)/ {a
export PYENV_ROOT=”$HOME/.pyenv” a
export PATH=”$PYENV_ROOT/bin:$PATH” a
‘ -e ‘:a’ -e ‘$!{n;ba};}’ ~/.profile
echo ‘eval “$(pyenv init –path)”’ »~/.profile
echo ‘eval “$(pyenv init -)”’ » ~/.bashrc
echo ‘eval “$(pyenv virtualenv-init -)”’ » ~/.bashrc
작성 후 우분투 종료 후 다시 실행
pyenv –version 으로 설치 확인
- pyenv를 사용해 파이썬 설치
pyenv install [파이썬 버전]
pyenv versions로 설치한 파이썬 확인 가능 - pyenv-virtualenv를 사용해 가상환경 생성
pyenv virtualenv [파이썬 버전] [생성할 가상 환경 이름]
pyenv uninstall [삭제할 가상 환경 이름] 으로 삭제 가능
[파이썬 버전]/envs/[가상 환경 이름]과 [가상 환경 이름] 두가지가 생성되는데 후자는 심볼릭 링크이다. 즉 후자가 전자의 바로가기라고 생각하면 된다. 어떤걸 쓰든 상관없다. - pyenv로 파이썬 적용
pyenv global [가상 환경 이름] 으로 글로벌 환경을 설정한다.
해당 폴더로 이동해서 pyenv local [가상 환경 이름] 으로 로컬 환경을 설정한다. - pyenv로 장고 설치
해당 환경에서 pip3 install django==[버전]
django-admin –version으로 설치 확인
pip3 list로 설치됀 파이썬 패키지와 버전 확인
장고 프로젝트 생성
django-admin startproject [프로젝트 이름] 으로 프로젝트 생성
프로젝트로 이동해서 python manage.py runserver로 서버 실행
장고 프로젝트 구조
프로젝트 이름
manage.py
프로젝트 이름
__init__.py
settings.py
urls.py
wsgi.py
- Project Root
프로젝트 이름으로 된 디렉토리.
최상위 디렉토리 - manage.py
프로젝트 관리를 위한 명령어 지원
manage.py는 django-admin에서 몇가지 기능이 추가된 것이다.
프로젝트 생성시에는 django-admin을 사용하고 나머지는 manage.py를 사용한다. - Project App
프로젝트 이름으로 된 디렉토리. - __init__.py
디렉토리를 하나의 패키지 파일로 인식하게 한다. - settings.py
시간대, DB, 여러 경로 설정 등 전반적인 설정 - urls.py
URL을 보고 알맞은 페이지로 연결 - wsgi.py
웹서버와 파이썬 어플리케이션인 장고가 소통하는데 필요한 일종의 프로토콜
장고 앱 생성
python manage.py startapp [앱 이름] 으로 앱 생성
새로운 앱을 생성하면 장고에게 이 사실을 알려야 한다.
settings.py안에 INSTALLED_APPS에 생성한 앱을 추가해야 한다.
장고 앱 구조
앱 이름
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
- __init__.py
디렉토리를 하나의 패키지 파일로 인식하게 한다. - admin.py
앱을 장고 관리자와 연동하기 위해 필요한 설정 파일 - apps.py
앱에 대한 설정을 넣어두는 파일 - migrations 디렉토리
장고 앱의 데이터 구조에 대한 변경 사항인 migration파일이 저장되는 곳 - models.py
앱에서 사용할 데이터 모델 구조를 정의하고 DB연동과 관련된 파일 - test.py
테스트 코드를 작성하는 곳 - views.py
앱의 메인 로직 처리와 관련된 파일
클라이언트 서버 구조
요청을하는 클라이언트와 응답을 하는 서버로 이루어져 있다.
클라이언트에서 URL로 서버에 요청을 한다.
URL은 도메인과 경로(Path)로 이루어져 있다.
도메인은 요청할 서버를 찾아준다.
경로는 요청하는 내용을 담고 있다. 서버 안에서 원하는 것이 있는 위치를 말한다.
장고에서 클라이언트 서버
요청이 들어오면 가장 먼저 setting.py에 ROOT_URLCONF를 보고 이동한다. 기본적으로 urls.py로 연결된다.
앱 디렉토리에 urls.py로 이동해서 위에서 부터 아래로 순서대로 일치하는 URL패턴을 탐색한다.
이후에 URL경로를 계속 매칭시키며 따라간다.
모든 경로의 매칭이 끝나면 연결된 함수를 호출해서 응답을 리턴한다.
URL 작성법
- 경로의 끝에는 항상 슬래시를 붙여준다.
- 경로의 앞에 슬래시가 있으면 도메인 부터의 경로를 의미한다.
/abc/는 naver.com/abc/를 말한다. - 경로의 앞에 슬래시가 없으면 현재 URL뒤에 이동하는 URL이 연결된 경로가 된다.
현재 /a12/에 있다고 하면 abc/는 naver.com/a12/abc/를 말한다.
템플릿
템플릿은 화면 구성을 담당하는 부분이다.
앱 디렉토리 안에 templates디렉토리를 만들고 그 안에 앱 이름으로 디렉토리를 만든다.
이 디렉토리 안에 html파일을 생성하고 html을 작성한다.
템플릿을 유저에게 보여줄 수 있도록 변환하는 것을 Render한다라고 한다.
views.py에서 render함수를 사용해 템플릿으로 넘겨주면 된다.
렌더링을 통해 HttpResponse객체로 변환된다.
render함수
render 함수는 인자로 주어진 템플릿을 사전형 인자인 context와 결합해서 렌더링을 거친 다음 HttpResponse 객체로 반환하는 함수다.
MVT구조
Model View Template을 MVT라 한다.
Model은 데이터 구조를 생성하고 DB와 소통한다.
Template은 웹 사이트의 화면 구성을 담당한다.
View는 웹 사이트의 로직을 담당한다.
모델과 템플릿 사이를 연결한다.
Leave a comment