Wecode #8 TIL Python - Django 웹 개발 준비

황인용·2019년 12월 17일
0

wecode TIL

목록 보기
8/12

Python 설치

Django는 Python 언어로 작성되었다. 따라서 Python이 있어야 Django를 실행할 수 있다.

개발환경OS : Ubuntu 18.04.3 LTS

(base)$ sudo apt install python

가상환경(Virtual Environment)

Django에서 가상환경(Virtual Environment)이란 Python 코드 상의 독립된 공간을 의미한다. 즉, 한 local에서 다양한 프로젝트를 같이 한다면, 패키지 간의 버전차이, 혹은 여러가지 이유로 충돌이 일어날 가능성이 매우크다. 따라서 프로젝트 서로간의 간섭을 피하기 위해 최소한의 기능만을 가지고 있는 깨끗한 가상의 공간을 제공하여 그 위에서 프로젝트를 실현하게 만들어주는 것이 가상환경이다.
따라서 가상환경을 만들고 가상환경안에서 필요한 패키지를 설치 후 project를 시작하는 것을 권장한다.

miniconda download

miniconda는 Anaconda의 minimal한 버전으로 conda, python 및 등등의 패키지를 제공하는 소프트웨어이다
https://docs.conda.io/en/latest/miniconda.html 에서 자신의 OS환경에 맞는 miniconda 확인 및 wget으로 miniconda 다운로드한다.

(base)$ wget https://repo.anacls
onda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

다운로드 후, miniconda를 실행한다

(base)$ chmod +x Miniconda3-latest-Linux-x86_64.sh 
(base)$ ./Miniconda3-latest-Linux-x86_64.sh 

miniconda 실행하는 환경변수를 본인의 shell에 적용한다

(base)$ cd  miniconda3/bin/

(base)$ ./conda init bash
(base)$ source ~/.bashrc

가상환경 만들기

miniconda를 통해 기존 가상환경을 확인하고 새로 만들어서 project환경을 구축할 수 있다.

(base)$ conda env list
(base)# conda environments:
#
base                  *  /home/inyong/miniconda3

새로 'pango'이라는 가상환경을 생성한다

(base)$ conda create -n pang python=3.7
(base)$ conda env list
# conda environments:
#
base                  *  /home/inyong/miniconda3
pango                    /home/inyong/miniconda3/envs/pango

만약 가상환경을 삭제하고자 한다면 remove명령어를 사용한다

(base)$ conda env remove -n pang
# conda environments:
#
base                  *  /home/inyong/miniconda3

가상환경을 실행한다
shell의 frompt가 다음과 같이 변경됨(*shell의 환경변수에 따라 달리 표시됨)

(base)$ conda activate pang
(pango)$

다시 base 환경으로 빠져나가고 싶을때는 'conda deactivate'를 실행한다

(pango)$ conda deactivate
(base)$

Django 설치

Django 개발 환경이란, Django를 로컬 컴퓨터에 설치하여 Django 어플리케이션을 개발, 실행, 테스트할 수 있는 환경을 말한다. 로컬 컴퓨터는 자신이 어플리케이션을 개발하는 데 사용하는 컴퓨터이다. 어플리케이션을 실제 배포하기 전에 로컬 컴퓨터 위에서 어플리케이션을 실행 및 테스트할 수 있다.

Django 자체가 제공하는 주요 툴에는 Django 프로젝트를 생성하고 작업하기 위한 파이썬 스크립트들과 심플한 개발용 웹 서버가 있다. 이 개발용 웹 서버로 우리는 로컬 컴퓨터에서 개발한 Django 어플리케이션을 같은 로컬 컴퓨터에서 테스트해볼 수 있다. 예를 들면, 자신의 PC에서 개발한 Django 웹 어플리케이션을 크롬 브라우저와 같은 웹 브라우저 상에서 실행하고 테스트해볼 수 있다.

웹서버로써 database를 기본적으로 활용하고자 할때, OOP(Object Oriented Programming)언어가 ORM(Object Relational Mapping)기반으로 database를 쉽게 접근할 수 있도록 지원한다. Django는 기본적으로 SQLite3 라는 Database를 지원한다.

때에 따라서 가상환경에 또는 로컬 컴퓨터 환경에 django를 설치하여 사용한다.
project 환경에 따라 맞는 python 그리고 django를 설치하고자 가상환경에서 설치하는 것을 권장한다.

(base)$ conda activate pango
(pango)$ pip install django

설치 후 간단하게 웹 서버를 실행하여 서버로써 서비스가 가능한지 확인 가능하다.

(pango)$ django-admin startproject mytestsite
#또는
(pango)$ django-admin startproject mytestsite .
# 현재 디렉토리에서 설치하고자 할 때 '.' 옵션을 추가
(pango)$ cd ~/mytestsite
(pango)$ python3 manage.py runserver 
Performing system checks...

System check identified no issues (0 silenced).

You have 15 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.

October 26, 2018 - 07:06:30
Django version 2.1.2, using settings 'mytestsite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Django Project 살펴보기

기본적인 project를 만들어진 내용을 살펴보기
project 생성 시 생성되는 기본파일

  • views.py
  • urls.py
  • models.py
  • migrations/
  • setting.py
  • db.sqlite3.py

Project와 App

하나의 Project가 하나의 Webstie라고 생각하면된다.
Project안에는 다양한 기능들이 있고, 어떤 의미있는 기능들을 App으로 관리한다.

Project를 생성

(pango)$ cd ~/sampleproject
(pango)$ django-admin startproject sampleproject .

project를 생성하면 다음과 같은 파일구조가 만들어진다.

(pango)$ cd ~/sampleproject
(pango)$ tree
.
├── manage.py
└── sampleporject
    ├── __init__.py
    ├── asgi.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py

1 directory, 6 files

sampleproject/setting.py 는 전체 프로젝트를 관리하는 설정파일.

App 생성

(pango)$ cd ~/sampleproject
(pango)$ python manage.py startapp blog
.

├── manage.py
└── sampleporject
│  		├── __init__.py
│  		├── __pycache__
│  		│   ├── __init__.cpython-37.pyc
│  		│   └── settings.cpython-37.pyc
│  		├── asgi.py
│  		├── settings.py
│  		├── urls.py
│  		└── wsgi.py
└── blog
     	├── __init__.py
     	├── admin.py
     	├── apps.py
     	├── migrations
     	│ 		└── __init__.py
     	├── models.py
     	└── views.py
4 directories, 14 files
  • manage.py
    Django 프로젝트와 다양한 방법으로 상호작용하게해주는 command-line utillity이다.
  • sampleporject
    Django project를 감싸는 root directory. 폴더명은 어느 것을 하던 상관없다..
  • init.py
    sampleproject라는 디렉토리가 python Package라는 것을 Python에게 알리는 비어있는 파일이다
  • asgi.py
    웹 서버 게이트웨이 인터페이스는 웹서버와 웹 애플리케이션의 인터페이스를 위한 파이선 프레임워크 파일이다
  • settings.py
    이 Django 프로젝트에 대한 setting 및 configuration
  • urls.py
    이 Django 프로젝트의 URL 선언들
  • wsgi.py
    현재 프로젝트를 서비스하기 위한 WSGI 호환 웹 서버의 진입점이다
  • admin파일
    관리자 권한을 가진 사용자가 볼 수 있는 페이지
  • migrations/
    Database관련 폴더. models.py로 수정 및 정의 후 database 관련 mapping 구조를 파일로 저장되는 장소
  • models.py
    Database와 관련된 다양한 역할을 수행
  • Views.py
    Datebase로 가져온 데이터를 적절히 가공하는 역할

MySQL

데이터베이스는 정보를 저장하는 애플리케이션이다. 정보를 파일에 저장하는 것도 좋은 방법입니다만, 데이터베이스는 파일에 저장하는 것 보다 훨씬 많은 기능을 제공을 한다. 즉, 저장하는데 특화된 시스템이라고 할 수 있다.

그 중 MySQL은 오픈소스이고 무료이다. 이런 이유로 많은 웹 애플리케이션이 MySQL을 기본 데이터베이스로 채택하고 있다.

MySQL을 Django 연결 시 필요한 설정 뿐만아니라, 필요한 몇가지 패키지들이 있다.

mysql-server
mysql-server를 설치과정은 다음과 같다

(base)$ sudo apt-get install mysql-server
# mysql-server 관련 기본패키지를 설치한다
(base)$ mysql_secure_installation
# 현재 일반사용자가 root권한을 가져가는 것
## 보통은 db를 관리하는 사용자에게 권한을 설정

mysqlclient
Mysql server를 설치하고 접속하기 위해서는 client를 설치해야한다.
mysqlclient 라이브러리는 mysql server를 접속하기 위한 여러가지 의존성 패키지를 필요로 한다.

(base)$ sudo apt-get install libmysqlclient-dev

그리고 가상환경으로 활성화하여 mysql server에 접속에 필요한 'mysqlclient' 라이브러리를 설치한다

(base)$ conda activate pango
(pango)$ pip install mysqlclient

mysql-connector-python
마지막으로 django의 OOP언어인 python이 mysql과 연결되기 위해서는 'mysql-connector-python'이 필요하다

pip install mysql-connector-python

암호화 & JWT(Json Web Tokken)

profile
dev_pang의 pang.log

0개의 댓글