영벨롭 개발 일지

[Django] 장고 개발 환경 세팅하기 - 가상 환경, 설치, Django 내부 구조 본문

Back-end/Django

[Django] 장고 개발 환경 세팅하기 - 가상 환경, 설치, Django 내부 구조

영벨롭 2022. 5. 11. 21:49

[ 필요한 프로그램 ]

 

 Django 프로젝트를 진행하기 위해선 Python, VS Code, GIT 설치가 필요합니다. 

 

 

 

 

 

 

[ 가상 환경 ]

 

 가상 환경은 독립적인 개발 환경을 만들기 위해서 사용하는 파이썬 내장 기능입니다. 

 

 

★ Why use 가상 환경?

 

 만약 우리의 Django 프로젝트를 우리의 컴퓨터 전역에 설치했다면, 프로젝트 환경은 컴퓨터 전체에 영향을 미칠것이고, 이 프로젝트를 삭제하거나 변경했을 때 어떠한 영향을 줄 수도 있는것이지요.

 

 만약 프로젝트 A와 프로젝트 B 모두 전역으로 설치했을 때, A에만 특정 패키지를 설치했을 시 B에도 영향이 미치게 됩니다. 

 

 때문에 우리는 가상 환경에 Django 프로젝트를 만들고 전체 시스템 범위에는 영향을 못 미치게끔 독립적인 가상 환경에서 프로젝트를 진행해야합니다. 

 

 

 

 

 

[ Django 개발 환경 세팅하기 ]

 

 폴더를 하나 만들고 VS Code에서 폴더를 연 뒤, bash로 터미널을 열어주세요.

 

 

 

 

1. 가상환경 만들기 

 

 제일 먼저 가상환경을 만듭니다.

 

 명령어는 다음과 같습니다. venv는 virtual environment 가상 환경의 약어입니다.

 

$ python -m venv 가상환경이름

 

 저는 myvenv 라는 가상환경을 만들었습니다. 

 

 명령이 완료되면, 탐색기에 가상환경이름의 폴더가 하나 생성된 것을 확인할 수 있습니다. 

 

 

 

 

2. 가상환경 실행하기 

 

 

 가상환경을 만들었으면 그 가상환경 안으로 들어가야겠죠?

 

 우리가 만든 가상환경 폴더로 들어가면 Scripts 폴더가 있습니다. 그 안에는 activate 라는 이름의 실행 파일이 있는데 우리는 이것을 이용하여 가상환경을 실행할 수 있습니다. 

 

$ source 가상환경이름/Scripts/activate

 

 

 

- 가상환경 종료하는 명령

 

현재 가상환경을 종료하고 싶다면 deactivate 명령어를 실행하면 됩니다. 

$ deactivate

 

 

 

 

 

3. Django 설치하기 

 

 

 이제 가상환경을 구축해놨으니 django를 설치해줍니다. 

 

$ pip install django

 

 설치가 완료되면 다음 명령어를 통해 현재 환경에서 어떤 패키지가 설치되어 있는지 확인할 수 있습니다. 

 

$ pip freeze

 

 

 

 

4. Django 프로젝트 만들기

 

 

 자 이제 가상환경도 구축했고 django도 설치했으니 본격적으로 프로젝트를 생성해줍니다. 

 

$ django-admin startproject 프로젝트이름

 

 저는 myproj 라는 이름의 장고 프로젝트를 생성할게요

 

 생성이 완료되면 좌측 탐색기에 우리의 프로젝트 이름의 폴더가 하나 생성되고 Django 개발 환경 세팅 완료입니다!

 

 

 

 

 

 

[ Django 프로젝트 생성 시 기본 생성 파일들 ]

 

 프로젝트를 생성하고 나면 기본적으로 총 6개의 파일이 생성되는 것을 확인할 수 있습니다. 

 

 

 

★ __init__.py

 

 __init__.py 는 이 파일이 위치한 폴더가 패키지라고 알려주기 위한 파일로, 아무것도 작성되어 있지 않습니다. 

 

 해당 패키지를 초기화 해주는 역할을 합니다. 

 

 

 

 

★ urls.py

 

urls.py 파일은 각종 url들을 등록하고 관리해주는 파일로, 특정 url이 들어왔을 때 어떤 동작을 수행할지를 지정합니다. 

 

 

 

 

★ settings.py

 

 settings.py 는 프로젝트 실행시 필요한 정보들이 담겨져 있습니다. 몇 가지 정보들을 살펴봅시다!

 

 BASE_DIR 는 현재 프로젝트의 기본 위치를 나타냅니다. 

 

 SECRET_KEY 는 이름에서 유추할 수 있듯이, django 설치를 위한 비밀 키이며 암호화 인증에 사용되는 키이므로  외부에 노출하게되면 보안상의 위험이 있으므로 노출하면 안되겠죠?

 

 DEBUG 는 값이 True일 경우 존재하지 않는 url 을 접근했을 때 서버 내부의 정보를 보여줍니다. 이는 보안상의 위험이 있으므로 False 로 변경하는 것을 권고합니다. 

 

 INSTALLED_APP 은 현재 프로젝트에서 사용하고 있는 어플리케이션이나 외부 패키지들의 정보를 담고 있습니다. 

 

 DATABASE 는 어떠한 데이터베이스를 쓸 것이고, 또 그것이 어디에 있는지에 대한 정보를 알 수 있습니다. 

 

  LANGUAGE_CODETIME_ZONE 의 값을 바꾸어 우리 프로젝트가 실행될 사이트의 언어와 시간을 지정할 수 있습니다.

(한국: LANGUAGE_CODE = 'ko-kr'  TIME_ZONE = 'Asia/Seoul')

 

 STATIC_URL 은 우리 프로젝트에서 미리 준비한 파일들(html, css, javascript)의 위치를 나타냅니다. 

 

 

 

 

 

★ manage.py

 

 manage.py 를 이용하여 우리는 여러 기능을 수행할 수 있습니다. 

 

 

1. 서버 실행하기

 

 우리가 생성한 django 폴더로 이동하신 뒤, 다음 명령어를 실행하여 우리의 프로젝트의 웹 서버를 실행할 수 있습니다.

 

$ cd 프로젝트이름
$ python manage.py runserver

 

 이제 http://127.0.0.1:8000 로 이동하시면 성공적으로 서버가 실행된 것을 확인할 수 있습니다!

 

 서버 실행을 종료할 때는 Ctrl + C 를 누르시면 됩니다. 

 

 

 

 

2. Application 만들기

 

 쇼핑몰 웹 사이트를 만든다고 가정해봅시다. 이때 댓글 기능, 장바구니 기능 등 여러 기능이 있을 수 있겠죠? 이때 이 기능들을 하나의 어플리케이션에서 관리하는 것이 좋을까요 비슷한 기능들을 묶어 관리하는 것이 좋을까요?

 

 당연히 비슷한 기능들을 묶어서 관리하는 것이 좋습니다. 

 

 때문에 어플리케이션(application)은 프로젝트의 단위라고 할 수 있습니다.  

 

$ python manage.py startapp 앱이름

 

 저는 myapp 이름의 어플리케이션을 만들어볼게요

 

 생성이 되면 우리의 Django 프로젝트 내부의 myapp 이름의 폴더가 생성이 된 것을 확인할 수 있습니다. 

 

 이때 이 어플리케이션을 사용하기 위해선 settings.py의 INSTALLED_APPS 배열에 해당 어플리케이션 이름을 추가해줘야합니다. 

 

 

 

 

3. DATABASE 초기화 및 변경사항 반영

 

$ python manage.py migrate

 

 

 

4. 관리자 계정 만들기 

 

$ python manage.py createsuperuser

 

 이 명령어를 실행하면 관리자의 Username, Email address, Password 의 정보를 입력하게 됩니다. 

 

 이때의 Username과 Password를 기억해주세요~

 

 urls.py 파일을 보시면 'admin/' 이라는 문자열이 있습니다.

 

 우리의 웹 사이트 주소인 http://127.0.0.1/ 경로에 admin/ 을 추가하면(http://127.0.0.1/admin/) 관리자 사이트로 접속하게 해줍니다. 

 

 그럼 로그인 창이 뜰 텐데, 아까 지정한 Username과 Password를 입력하면 관리자 페이지로 이동하게 되고 여기서 웹 사이트를 관리할 수 있습니다. 

 

 

 

 

[ Django 프로젝트 예제 ]

 

 Django는 MTV 디자인 패턴을 따릅니다. 

 

 Model 은 데이터베이스를, Template은 사용자 인터페이스를, View는 웹 사이트 내부 로직을 담당합니다. 

 

 이 패턴을 지켜줘야하겠죠? modes.py와 views.py는 이미 생성되어 있는 반면 사용자 인터페이스를 담당할 폴더는 생성해야 합니다. 

 

 우리가 만든 어플리케이션인 myapp 내부에 사용자 인터페이스를 담당할 templates 폴더를 하나 생성하고 index.html을 생성하겠습니다. 

 

 이제 views.py 에서 웹 사이트의 내부 로직을 작성하겠습니다. 

 

 사용자 인터페이스도 지정했고~ 내부 로직도 작성했으니! 이제 웹 사이트에 반영만 하면 되겠죠?

 

 urls.py 로 이동하여 myapp의 views를 import를 꼭! 해주시고 path를 추가합니다. 

 

 path('/foo', myapp.views.함수이름)은 우리주스/foo 라는 url 요쳥이 들어왔을 때 myapp 안에 있는 views.py 내부의 함수를 실행시킵니다. 

 

 저는 기본 페이지를 index.html 로 해주기 위해 경로는 '' 로 해줄게요

 

 

 

 이제 페이지로 이동하시면 우리가 만든 index.html의 내용을 확인할 수 있습니다~~~~

 

반응형