[Django] 장고(Django)란? 개발 환경 설정 및 장고 프로젝트 생성하기

EUN JY·2022년 2월 9일
2

Python

목록 보기
1/3
post-thumbnail

1. Django

  • 웹사이트를 신속하게 개발하도록 도움을 주는 파이썬 웹 프레임워크

1-1. Django 특징

  • Complete : 일관된 디자인 룰을 적용하여 광범위한 최신 문서를 제공
  • Versatile : 다양한 종류의 웹 사이트를 빌드하는데 사용되고, 대부분의 형식(HTML, RSS 피드, JSON, XML 등)으로 컨텐츠 전송 가능
  • Secure : 보안 문제에 도움을 줌
    • 유저의 계정과 비밀번호를 관리하는 안전한 방법 제공, 변형되어 입력된 비밀번호가 유효한지 hash 함수를 통해 확인
    • SQL 인젝션, 크로스사이트 스크립팅, 크로스사이트 요청 위조, 클릭 하이젝킹 등의 보안 취약점 보완 방법을 제공)
  • Scalable : 컴포넌트 기반의 "shared-nothing" 아키텍쳐(각각의 아키텍쳐가 독립적이어서 필요하다면 교체 및 변경할 수 있는) 사용
    • 어떤 레벨에서든(캐싱 서버, 데이터베이스 서버, 어플리케이션 서버 등) 하드웨어 추가로 인해 발생하는 늘어난 트래픽에 대응해 크기 변경 가능
  • Maintainable : 유지보수가 쉽고 재사용하기 좋은 디자인 원칙과 패턴을 이용
  • Portable : 특정한 서버 플랫폼에 얽매이지 않으며 리눅스, 윈도우, 맥 OS X 등 다양한 운영체제에서 작동

2. Django 튜토리얼

2-1. Python 설치

  • Python 설치하기 www.python.org/
  • <Python 3.8.x> 권장
  • cmd 창에 python -V 입력하여 설치 확인

2-2. Django 설치

2-2-1. 파이썬 가상 환경

  • 파이썬 프로젝트를 진행할 때 독립된 환경을 만들어 주는 도구
  • 하나의 데스크톱에서 여러 개의 파이썬 프로젝트 진행 시, 사용하는 라이브러리의 버전이 다를 수 있음 > 독립된 가상 환경 필요

2-2-2. 파이썬 가상 환경 사용

  • 윈도우에서 명령 프롬프트 실행
  • C:/venvs 디렉터리 생성
C:\Users\pahkey> cd \
C:\> mkdir venvs
C:\> cd venvs
  • 파이썬 가상 환경 만들기
    • python -m venv : 파이썬 모듈 중 venv 모듈을 사용한다는 의미
    • mysite : 생성할 가상 환경의 이름
C:\venvs> python -m venv mysite
  • C:/venvs 디렉터리 아래 mysite 디렉터리 생성된 것 확인
    • 이 디렉터리가 가상 환경이나, 만들고 바로 사용 불가 > 가상 환경 사용을 위해 가상 환경에 진입해야 함
  • mysite 가상 환경에 있는 Scripts 디렉터리의 activate 명령 수행 > mysite 가상 환경에 진입
    • (mysite) : 진입한 가상 환경을 의미
C:\venvs>cd C:\venvs\mysite\Scripts
C:\venvs\mysite\Scripts> activate
(mysite) C:\venvs\mysite\Scripts>
  • 진입한 가상 환경에서 벗어나려면 deactivate 명령 실행
(mysite) C:\venvs\mysite\Scripts> deactivate
c:\venvs\mysite\Scripts>

2-2-3. 가상 환경에 Django 설치

  • mysite 가상 환경에 장고를 설치 (가상 환경에 진입한 상태에서 진행)
  • pip : 파이썬 라이브러리를 설치하고 관리해 주는 파이썬 도구
    • pip install django==3.1.3 : pip으로 장고 3.1.3 버전을 설치하는 명령
(mysite) C:\venvs\mysite\Scripts> pip install django==3.1.3
Collecting django
  Using cached https://files.pythonhosted.org/packages/01/a5/fb3dad18422fcd4241d18460a1fe17542bfdeadcf74e3861d1a2dfc9e459/Django-3.1.3-py3-none-any.whl
Collecting asgiref~=3.2.10 (from django)
  Using cached https://files.pythonhosted.org/packages/d5/eb/64725b25f991010307fd18a9e0c1f0e6dff2f03622fc4bcbcdb2244f60d6/asgiref-3.2.10-py3-none-any.whl
Collecting sqlparse>=0.2.2 (from django)
  Using cached https://files.pythonhosted.org/packages/85/ee/6e821932f413a5c4b76be9c5936e313e4fc626b33f16e027866e1d60f588/sqlparse-0.3.1-py2.py3-none-any.whl
Collecting pytz (from django)
  Using cached https://files.pythonhosted.org/packages/4f/a4/879454d49688e2fad93e59d7d4efda580b783c745fd2ec2a3adf87b0808d/pytz-2020.1-py2.py3-none-any.whl
Installing collected packages: asgiref, sqlparse, pytz, django
Successfully installed asgiref-3.2.10 django-3.1.3 pytz-2020.1 sqlparse-0.3.1

WARNING: You are using pip version 19.2.3, however version 20.2.3 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
  • 위와 같이 WARNING 문구가 뜨면, pip을 최신 버전으로 설치할 필요가 있음
(mysite) C:\venvs\mysite\Scripts> python -m pip install --upgrade pip
Collecting pip
  Downloading https://files.pythonhosted.org/packages/54/0c/d01aa759fdc501a58f431eb594a17495f15b88da142ce14b5845662c13f3/pip-20.0.2-py2.py3-none-any.whl (1.4MB)
     |================================| 1.4MB 226kB/s
Installing collected packages: pip
  Found existing installation: pip 19.2.3
    Uninstalling pip-19.2.3:
      Successfully uninstalled pip-19.2.3
Successfully installed pip-20.0.2

3. Django 프로젝트

  • Django의 프로젝트 = 하나의 웹 사이트
  • Django 프로젝트를 생성하면 한 개의 웹 사이트를 생성하는 것과 같음
  • 프로젝트 안에는 여러 개의 앱이 존재, 이 앱들이 모여 웹 사이트를 구성
    • 앱 : 프로젝트를 구성하는 작은 단위의 기능 (관리자 앱, 인증 앱 등과 같이 장고가 기본으로 제공하는 앱 + 개발자가 직접 만든 앱)

3-1. 프로젝트 생성

  • Django 프로젝트가 여러 개가 될 수 있으므로, 프로젝트들의 루트 디렉터리 생성이 필요
  • C:\projects 로 프로젝트 루트 디렉터리 생성, 해당 디렉터리로 이동
C:\Users\pahke>cd \
C:\>mkdir projects
C:\>cd projects
C:\projects>
  • mysite 가상 환경에 진입
C:\projects>C:\venvs\mysite\Scripts\activate
(mysite) C:\projects>
  • 장고 프로젝트 생성 이전에 먼저 파이보 프로젝트를 의미하는 mysite 디렉터리 생성
(mysite) C:\projects>mkdir mysite
  • mysite 디렉터리로 이동
(mysite) C:\projects>cd mysite
(mysite) C:\projects\mysite>
  • Django 프로젝트 생성
    • 점 기호(.) : 현재 디렉터리를 의미
    • django-admin startproject config . : 현재 디렉터리인 mysite를 기준으로 프로젝트 생성
(mysite) C:\projects\mysite>django-admin startproject config .
  • 프로젝트가 생성되면 mysite 디렉터리 아래 Django가 필요로 하는 여러 디렉터리와 파일들이 생성됨

3-2. 개발 서버 구동

  • 생성된 mysite를 구동
    • Starting development server at http://127.0.0.1:8000/ : 장고 서버가 http://127.0.0.1:8000/ 로 시작됨
    • Quit the server with CTRL-BREAK. : 서버 중지를 위해서는 CTRL-BREAK를 입력하라는 뜻
(mysite) C:\projects\mysite>python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 18 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
April 21, 2020 - 21:51:03
Django version 3.1.3, using settings 'config.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
  • 웹 브라우저 주소창에 http://127.0.0.1:8000/ 입력

3-3. 가상 환경 진입 방법

3-3-1. 명령 프롬프트

  • cmd 창에 아래 내용 입력
    • C:/projects/mysite 디렉터리로 이동
    • c:/venvs/mysite/scripts/activate 명령 수행
C:\projects>C:\venvs\mysite\Scripts\activate
(mysite) C:\projects>

3-3-2. 배치 프로그램

  • 텍스트 에디터로 mysite.cmd 파일 생성하여 작성
    • 배치(batch) 파일 : 확장자 .cmd가 붙은 파일, 명령어 입력과 실행을 한 번에 해주는 파일
@echo off
cd c:/projects/mysite
c:/venvs/mysite/scripts/activate
  • 명령 프롬프트 어느 곳에서나 수행될 수 있도록 C:/venvs 디렉터리를 시스템 환경 변수 PATH에 추가해야 함
    • Windows + R 입력 > sysdm.cpl 입력하여 실행
    • 고급 - 환경변수 - 상단 사용자 변수 - Path - 편집 - 새로 만들기
    • C:\venvs 추가 - 확인
    • cmd 창을 열어 set path 입력으로 적용이 잘 된 것 확인
  • 배치 파일명인 mysite를 입력하여 가상 환경 진입 성공 확인
C:\Users\pahkey> mysite
(mysite) C:\projects\mysite>

3-3-3. 배치 프로그램 (for Mac OS)

  • mysite.cmd 대신 mysite.sh 작성
    • 파일 이름: /Users/pahkey/venvs/mysite.sh
#!/bin/bash

cd /Users/pahkey/projects/mysite
source /Users/pahkey/venvs/mysite/bin/activate
  • 터미널에서 아래 내용 입력하여 수행
$ /Users/pahkey/venvs/mysite.sh
profile
개린이

0개의 댓글