장고 프로젝트 초기 세팅은 어떻게 할까?
가상환경 (https://velog.io/@yj-leee/Django-web-framework)
▶Project
에 필요한 python package
설치
$ pip install django
# 이후에 MySQL server에 접속하기 위한 package
$ pip install mysqlclient
(중요)mysql 부터 설치할것
▶Django project & application
생성
django-admin startproject westarbucks
$ cd westarbucks
$ python manage.py startapp products
▶settings.py
설정
IP 허용
ALLOWED_HOSTS = ['*']
주석처리
▶ westarbucks/urls.py
를 아래와 같이 수정
from django.urls import path
urlpatterns = [
]
▶Database
생성
▶Database
수정
▶products/models.py
작성
Frame work 장고
프레임워크란?
소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합
라이브러리는 단순 활용 가능한 도구들의 집합을 말한다.
따라서 프레임워크가 라이브러리보다 더 큰 범위이다.
Python django vs Flask
파이썬의 웹 프레임워크의 대표적인 2가지는 Flask
와 django
이다.
django
는 python
의 full stack web framework
인 반면
Flask
는 가볍고 확장이 가능한 web frame work
이다.
django
는 flask보다 약 10배의 많은 코드라인으로 개발이 되어있으며 orm 기능이 내장되어 있으며 web application
을 개발하기 위한 대부분의 기능들이 갖추어져 있기 때문에 외부 도구 및 라이브러리를 사용하지 않고도 어느 정도 규모가 있는 web application
개발이 가능한 아주 좋은 아이이다.
template
은 위코드에서는 다루지 않는다.
그렇다면
Model
과views
에 대해 알아보자
▶ Model
데이터베이스의 테이블을 정의하는 것
데이터베이스의 sql
언어를 파이썬 코드로 연결되어야 한다.
이것은 orm
이라는 녀석이 해준다.
파이썬의 클래스로 테이블을 만든다.
▶ views
로직 처리
위에서 장고의 템플릿은 화면을 띄워주고, 모델은 데이터베이스 테이블을 정의해주는것이라고 배웠다. 뷰는 데이터를 다루고 기능을 구현하는 로직을 만든다.
그리고 요청에 맞게 가공해 보내주는 것을 처리한다.
▶ 로직 처리 부분에서 시간 복잡도와 공간 복잡도를 계산해 성능 최적화를 생각 해내는것이 백엔드의 역할이다! "어떻게 하면 빠르게 작동하게 할 수 있을지"를
생각하면서 로직을 짜는곳이 뷰이다.
Django
의workflow
백엔드는 기본적으로 요청에 의해서 움직인다.
요청의 주체인 프론트엔드(client
)가 브라우저에 의해서 요청(`Request')한다.
url
홈페이지 주소 뒤에는 기본적으로 /
가 들어가고 나머지 주소로 어떤 페이지로 이동할지 정해준다.
은행에서 번호표 뽑아서 어디로 가세요~ 하고 안내해주는 역할이다.
view
요청에 맞는 views
에 도착하게 되면 어떤 요청인지 해석해서 CRUD
한다.
model
위에서 모델은 데이타베이스 테이블을 만드는 애라고 배웠다.
orm
은 파이썬과 mysql
을 연결해주는 역할을 한다.
orm
은 여기서 뿐만 아니라 그 역할을 하는 패키지가 있는 굉장히 큰 개념이고 여기서는 장고 orm
을 쓰게 된다.