on
배움기록 210515 : django
배움기록 210515 : django
django 알아보기
django란?
python 기반 웹 프레임워크
핀터레스트, 인스타그램이 장고를 쓴 것으로 유명하다.
flask와의 차이
플라스크 : 마이크로 웹 프레임워크
최소한의 기능만을 가지고 있다. 필요한 기능이 있다면 따로 추가해야함
장고 : 풀 프레임워크
대부분의 기능이 장고 안에 이미 있다.
가상환경을 만들고 장고를 설치한다.
장고 프로젝트 시작하기
CLI환경에서
django-admin startproject <프로젝트 이름>
그러면 현재 경로 밑에 <프로젝트 이름> 폴더가 생기고,
그 안에 같은 이름의 폴더가 또 있고, manage.py 파일이 있는 것을 확인할 수 있다.
해당 폴더에서
python manage.py runserver
를 입력하면 바로 서버를 가동할 수 있다.
콘솔에서 안내해주는
http://127.0.0.1:8000/
로 접속하면
이 페이지가 보인다.
장고의 구성요소
프로젝트 이름이 webproj이다.
┌ webproj
│ ├ __init__.py
│ ├ asgi.py
│ ├ settings.py
│ ├ urls.py
│ └ wsgi.py
│
├ manage.py
└ db.sqlite3
manage.py : 장고를 실행하는 부분. 실제로 python manage.py runserver로 실행했다.
__init__.py : webproj가 파이썬 모듈로 인식되게 하는 부분
asgi.py, wsgi.py : 서버에서 실제로 장고 프로젝트를 가동할 때 다루게 될 부분
settings.py : 파이썬 장고 프로젝트의 설정사항을 다루는 곳
settings.py
SECURITY_KEY : 장고 프로젝트에 대한 시큐리티 키
DEBUG : 디버그 모드 on/off
ALLOWED_HOST : [list]
리스트 안에 주소를 넣으면, 해당 주소에서 프로젝트에 접근할 수 있다.
INSTALLED_APPS : 장고 프로젝트에 어떤 앱을 설치할 지 다룸
MIDDLEWARE : INSTALLED_APPS와 비슷
ROOT_URLCONF : 프로젝트에서 url관리를 어떤 모듈이 담당할지 정함
TEMPLATES : 우리가 실제로 볼 화면이 담기는 파일에 대한 설정
WSGI_APPLICATION : ?? 뭐지 이해못함
DATABASES : 프로젝트에서 다루게 될 자료를 저장하는 곳, 기본값은 sqlite3
AUTH_PASSWORD_VALIDATORS : 관리자 패스워드를 관리하는 부분
STATIC_URL : CSS나 자바스크립트나 이미지 파일들 등을 어느 경로에 담아둘 지 정함
urls.py : url을 관리하는 곳
urls.py
urlpatterns : 리스트
urlpatterns = [ path('admin/', admin.site.urls), ]
"admin"이라는 요청이 들어오면, 이에 대한 응답은 admin.site.urls에서 담당한다는 뜻
Django Project and App
하나의 project는 여러개의 app으로 구성된다.
프로젝트의 각 부분을 app으로 모듈화하여 제작한다.
새로운 앱 만들기
django-admin startapp
주의사항 : 프로젝트 폴더 안에서 실행해야 함(manage.py와 같은 경로에 있을 때 이 명령어를 실행해야 함)
homepage앱 생성
┌ webproj
├ homepage
│ ├ migrations
│ ├ __init__.py
│ ├ admin.py
│ ├ apps.py
│ ├ models.py
│ ├ test.py
│ └ views.py
│
├ manage.py
└ db.sqlite3
admin.py : admin page에 대한 부분
apps.py : app의 설정을 관리하는 부분
models.py : 이 모듈에서 쓰일 데이터베이스의 스키마를 클래스 형태로 작성하게 됨
test.py : 이 모듈의 테스트케이스에 대해 설명하는 부분
views.py : 이 앱의 뷰에 대해 설정하는 곳
django의 MVT Pattern
MVC : model view controller
유저가 요청을 보내면(http 요청)
해당 요청이 urls.py에 있다면 이 요청을 view에 보냄(views.py에서 처리)
view에서 데이터베이스를 처리하는 부분은 model
장고는 model을 ORM으로 관리함
웹페이지의 문서를 보여주는 부분은 templete에서 관리함
장고에는 특수한 템플릿 언어가 있다.
처리가 끝나면 다시 장고를 통해 유저에게 보내주는 것이 MVT Pattern이다.
from http://vingsu.tistory.com/26 by ccl(A) rewrite - 2021-05-15 22:26:36