Djano란 보안이 우수하고 유지보수가 편리한 웹사이트를 신속하게 개발하는 하도록 도움을 주는 파이썬 웹 프레임워크입니다. 훌륭한 개발자에 의해 만들어진 이 프레임워크는, 웹 개발을 하는데 많은 도움을 주기 때문에 새롭게 웹 개발을 시작할 필요없이 그저 프레임워크를 활용하여 앱 개발에만 집중할 수 있게되죠. 무료 오픈소스인데다가, 활발한 커뮤니티들이 있고, 좋은 참고자료와 무료 및 유료 지원을 하는 옵션들이 제공됩니다. 장고는 파이썬으로 작성되어 있으며, 파이썬은 많은 플랫폼에서 작동합니다. 그것은 특정한 서버 플랫폼에 얽매이지 않는다는 것을 의미하며, 리눅스, 윈도우 그리고 맥 OS X 등등 다양한 운영체제에서 작동할 수 있다는 뜻입니다. 나아가, 장고는 많은 웹 호스팅 공급자들에 의해서 지원되고 있습니다. 그들은 장고 사이트의 호스팅과 관련해서 특정한 인프라와 문서를 제공합니다.
장고는 신문 웹사이트를 제작 및 관리하던 어떤 웹 팀에 의해 2003년에서 2005년 사이에 처음으로 개발이 시작되었습니다. 여러 사이트들을 만들면서 웹 팀은 많은 공통 코드와 설계 패턴을 뽑아내어 재사용하였습니다. 이 공통 코드는 일반 웹 개발 프레임워크로 발전했습니다. 그리고 2005년 7월 "장고" 프로젝트로서 오픈소스화 되었죠 장고는 2008년 9월 첫 번째 주요 릴리즈(1.0)에서부터 2017년의 최근 버전(2.0)까지 성장하고 발전했습니다. 장고는 각각의 버전에서 기능을 추가하고 버그를 수정했습니다. 새로운 유형의 데이터베이스, 탬플릿 엔진들 그리고 캐싱에 대한 지원에서부터 일반 보기 함수와 클래스들의 추가까지요(이를 통해 여러 프로그래밍 작업을 위해 개발자들이 작성해야 할 코드를 줄여줍니다. 장고는 수많은 사용자와 기여자가 있는 협력적이고 번성하는 프로젝트입니다. 여전히 몇 가지 장고만의 특징이 있지만, 장고는 모든 유형의 웹사이트를 개발할 수 있는 다용도적인 웹 프레임워크로 발전했습니다.
일단 장고를 설치하기 전에 가상환경을 만들어 줘야 된다. miniconda를 설치한 후에 터미널을 실행하고 명령어를 입력시켜준다.
conda create -n "가상환경 이름" python=3.10
conda activate "가상환경 이름"
파이썬 버전은 자신이 사용하는 버전으로 입력해 주면 된다. 그 후에 activate를 이용해 가상환경에 접속하면 된다. 가상환경에 접속한 후 장고를 설치해 주면 된다.
pip install Django
python -m django --version
설치후 장고에 버전을 확인해 잘 설치되었는지 확인할 수 있다.
Django-admin -> 사용할 수 있는 서브 명령어를 출력 해준다.
Python3 manage.py -> 사용할 수 있는 서브 명령어를 출력 해준다.
밑에 있는 python3명령어는 나중에 manage.py를 설치한 후에 입력하면 Django-admin과 같이 서브 명령어가 출력이 되는데 몇 가지 명령어가 더 있지만 큰 차이는 없다.
django-admin startproject 프로젝트이름
위에 명령어를 이용해 프로젝트를 만들 수 있다! 여기서 특징이 하나 있는데 아무 옵션을 주지않으면 프로젝트이름 안에 같은이름에 파일이 생성됨 프로젝트이름. 을 찍어주면 현재만드는 프로젝트이름안에 파일들을 만드는 특징이 있어서 알맞게 사용하면 될 거 같다. 프로젝트 파일을 만들면 다음과 같이 자동으로 파일이 생성된다. 나는 프로젝트 이름을 mtproject라고 했다!(생활코딩 보면서 실습함.. 초반에 개념 잡는데 많이 도움 되었음!)
그리고 폴더에 속하지 않은 manage.py가 있을거다. 이 파일들의 쓰임새는 다음과 같다.
manage.py: Django 프로젝트와 다양한 방법으로 상호작용 하는 커맨드라인의 유틸리티 입니다.
내가만든프로젝트/: 디렉토리 내부에는 프로젝트를 위한 실제 Python 패키지들이 저장됩니다. 이 디렉토리 내의 이름을 이용하여, (프로젝트이름.urls 와 같은 식으로) 프로젝트의 어디서나 Python 패키지들을 임포트할 수 있습니다.
__init__.py: Python으로 하여금 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일입니다.
Settings.py: 프로젝트를 운영하는 여러가지 설정이 포함되어있음
Urls.py: 사용자가 접속하는 PATH에 따라서 그 접속및요청을 어떻게 처리할지 누가 처리할지 지정하는 라우팅을 해주는 파일
asgi.py랑 wsgi.py는 프로젝트를 만들면서 건들일이 없을 거라서 간단하게 설명하면 이 프로젝트를 배포할때 사용되는 걸로 알고있다.(사실 몰라도 된다고해서 정확히모름..)
위에 urls.py설명을 보면 라우팅이라는 용어가 나오는데 매우 중요한 용어이다. 듣기로는 웹 애플리케이션에서는 라우팅이 반이라고 한다.. 라우팅이란 한마디로 경로이다 웹 애플리케이션에서 경로라는 것은 사용자가 접속한 각각의 경로를 누가 처리할지를 지정하는 것이다. urls.py가 처음에 많이 헷갈렸다. 지금도 많이 헷갈리고 완벽히 이해가 된게 아니지만 장고에서 각각의 파일들을 호출해서 전달하려면 URL 이 있어야 하는데, 이를 위해 URLconf가 사용 된다고 한다. 그 역할을 urls.py가 해주는 것이다.
이게 라우팅 즉 경로이다. 보면 urls.py 파일들끼리 연결 되어있는 것을 볼 수 있다. 그림에서보면 /read/1 이라는 요청이 들어오면 include 함수를 이용해 myapp으로 보낸후 myapp urls.py에서 read를 views.py로 전달해 read라는 함수에 저장되있는 값을 /read/1에 보내는 것이다. 이 이미지를 보고 라우팅에 대해 많이 이해가 되었다. 그리고 urls.py는 당연한 거지만 모든앱 파일에 있어야 한다.
앱을 마음대로 만들 수도 있고 개발서버를 실행시킬 수도 있다!
Django-admin startapp 앱이름
을 이용해 사용하고자 하는 앱을 만들 수 있다.
python manage.py runserver
를 이용해 개발서버를 시작할 수 있다. 개발서버를 실행 후 자신의 웹 브라우져에서 http://127.0.0.1:8000/ 을 통해 접속할 수 있습니다. 로켓이 이륙하는 모습이 담긴 《Congratulations!》 페이지가 나오는 것을 볼 수 있다! 별로 한것은 없었지만 처음에 이 페이지를 보고 내가 뭔가를 만든 것처럼 뿌듯했었다.
포트 변경하기
기본적으로, runserver 명령은 내부 IP 의 8000 번 포트로 개발 서버를 띄웁니다. 만약 이 서버의 포트를 변경하고 싶다면, 커맨드라인에서 인수를 전달해주면 됩니다. 예를들어, 이 명령은 포트를 8080 으로 서버를 시작할 것입니다.
$ python manage.py runserver 8080
서버의 IP를 변경하려면 포트와 함께 전달하십시오. 예를 들어, 사용 가능한 모든 공용 IP를 청취하려면 (이는 Vagrant를 실행 중이거나 네트워크의 다른 컴퓨터에서 작업하고 싶을 때 유용합니다) 다음을 사용하십시오.
$ python manage.py runserver 0:8000
기본적으로 설정을 안할경우 8000포트로 입력된다.
runserver 의 자동 변경 기능
개발 서버는 요청이 들어올 때마다 자동으로 Python 코드를 다시 불러옵니다. 코드의 변경사항을 반영하기 위해서 굳이 서버를 재기동 하지 않아도 됩니다. 그러나, 파일을 추가하는 등의 몇몇의 동작은 개발서버가 자동으로 인식하지 못하기 때문에, 이런 상황에서는 서버를 재기동 해야 적용됩니다.
파이썬을 하다가 장고를 배우면서 이게 무슨 문법이지.. 도대체 뭐지.. 하면서 이해가 안가서 머리가 아팠지만 하나 둘 이해가 되면서 재미가 있는 거 같기도 하다. 사실 재미없음