backend django tutorial #1 프로젝트 세팅

hwang-eunji·2020년 4월 6일
0

backend

목록 보기
5/27

Django

django 공홈 튜토리얼 따라 진행하기

1. 가상환경 프로젝트 생성

conda create -n tutorial-01 python=3.7

중간에 proceed y or n? 물어보면 y로 답하고 계속 진행

1) 가상환경 삭제

conda env remove --name <프로젝트명>
conda env remove --name tutorial-01

2. 생성 프로젝트 확인 & 가상환경 지정

conda env list

위 명령어를 통해 생성된 가상환경을 확인할 수 있다.

conda activate tutorial-01
위 명령어를 통해 가상환경을 선택하고, 튜토리얼을 진행하자!

3. 장고설치

가상환경과 프로젝트디렉토리는 다르다. 가상환경을 설치한 뒤 프로젝트 디렉토리로 경로를 이동하도록한다

장고프로젝트를 진행할 디렉토리로 이동하였다. 현재 디렉토리에 장고프로젝트를 설치하자

pip install django 를 통해 장고프로젝트를 생성했다.


파이썬 버전 확인 : python --version
장고 버전 확인 : python -m django --version

4. 프로젝트 생성

django-admin startproject <프로젝트명>
<프로젝트명> 폴더에 <프로젝트명>이 중복되어 설정파일이 담긴다. 중복된 폴더명이 싫다면 아래와 같이설정할 수 있다.
django-admin startproject config .
config라는 폴더를 생성하여 그안에 설정파일이 담긴다. config 옆의 (.) 은 현재 폴더를 가르킨다. 꼭 프로젝트 디렉토리로 이동한뒤 위 명령어를 쳐야 해당 프로젝트디렉토리에 config 폴더와 이하 설정파일이 설치된다.

이름에 하이픈(-)은 사용할 수 없다. 언더바(_)는 가능

위 사진은 <프로젝트명> 만 입력했음으로 중복된 폴더명으로 설정파일이 설치되었다.

파일구조 보기

1) manage.py

프로젝트 이하 관리, project root에 위치한다. 서버가 실행되는 곳이다.
python manage.py runserver 와 같이 manage.py로 서버를 실행~
python manage.py runserver 0:8000 으로 서버를 열면 서버를 연 컴퓨터의 IP:8000로 접속할수 있다.

2) 루트/프로젝트명/

디렉토리 내부에는 실제 Python패키지들이 저장된다.

3) 루트/프로젝트명/init.py

패키지 설정 파일, 즉 이 파일이 있다면 모듈이 아니고 패키지다. __는 던더라고 부르며 파이썬에서는 스페셜 메서드를 지칭한다.

4) 루트/프로젝트명/settings.py

현재 프로젝트의 모든 설정정보를 담고있는 파일. 중요한 정보는 user설정값, 별도 파일에서 불러온다.

BASE_DIR

SECRET_KEY

시크릿키, 숨겨놔야 하는 키, 절대 git에 올리지 않는다. 개발단계에서만 사용하며, 실 서비스에서 꼭 숨기기

DEBUG

true/false를 갖는다. 개발단계에서는 true 상태로 작업하여 문제점을 보기 쉽게 하며, 실 서비스에서는 false 상태로 둔다.

ALLOWED_HOSTS

장고를 runserver했을때 서버의 아이피가 127.0.0.1(=localhost) 뿐만 아니라 192,191,22,191일 수도 있다면 추가해서 작성한다.
ALLOWED_HOSTS = ['127.0.0.1', 'localhost','192,191,22,191']
기본은 ['*']

INSTALLED_APPS

추가한 앱을 관리하도록 하려면 리스트 추가한다. 필요없는 항목은 미리 주석처리 한다. migrate 명령 전에 주석처리를 하고 migrate를 해야 한다.

  • django.contrib.admin : 관리용 사이트
  • django.contrib.auth : 인증시스템
  • django.contrib.contenttypes : 컨텐츠타입을 위한 프레임워크
  • django.contrib.sessions : 세션 프레임워크
  • django.contrib.messages : 메세징 프레임워크
  • django.contrib.staticfiles : 정적파일을 관리하는 프레임워크

주석처리하기

  • 'django.contrib.admin'
  • 'django.contrib.auth'

앱 추가하기

INSTALLED_APPS = [
    'django.contrib.admin',
    ...,
    ...,
    # 추가된 앱
    'account', # 어카운트 앱을 추가했다
    ]

앱 설정파일추가하기 : 앱추가 방식보다 정확한 방법

  • 앱/apps.py 파일의 <앱이름>Config 클래스를 가져온다.
INSTALLED_APPS = [
    'django.contrib.admin',
    ...,
    ...,
    # <앱이름>.apps.<앱이름>Config
    'account.apps.AccountConfig,', # 어카운트앱의 설정을 추가했다
    ]

MIDDLEWARE

미들웨어 목록 아래 2개 기능은 사용하지 않음으로 주석처리한다.

  • 'django.middleware.csrf.CsrfViewMiddleware'
  • 'django.contrib.auth.middleware.AuthenticationMiddleware'

ROOT_URLCONF = '<프로젝트디렉토리>.urls'

메인 URL 설정을 지정한다. 해당 프로젝트디렉토리/urls.py가 기준이 된다.

DATABASE

기본 SQLite3로 되어 있다. 기본 설정이라면 DB는 본인의 컴퓨터에 파일로 저장된다.

위 와 같이 os.path.join(BASE_DIR, 'db.sqlite3) 설정이 필요하다. 만약 그밖에 DB를 사용한다면 django - Database 문서를 참고하자!

TIME_ZONE

# 기본설정
TIME_ZONE = 'UTC'
USE_TZ=True # 권장 설정이다

# 아시아/서울 설정 & 서울에서 사용한다면, 
TIME_ZONE = 'Asia/Seoul'
USE_TZ=False # 우리나라 시간은 일광절약시간제를 사용하지 않음으로 False~

django 공홈 timezone 문서

5) 루트/프로젝트명/urls.py

프로젝트의 url선언 저장, 사이트 '목차'라고 할 수 있다. view를 만들고 나면 url에 패스패턴을 등록한다. 이 경로는 엔드 포인트가 된다!

6) 루트/프로젝트명/asgi.py

파이썬에서 기본 제공(장고만 있는것 아님)되는 비동기 게이트 인터페이스로 비동기 서버동작(체팅서비스 같은 기능) 구현할때 사용한다.

7) 루트/프로젝트명/wsgi.py

파이썬에서 기본 제공(장고만 있는것 아님)되는 웹 서버 게이트 인터페이스
Apache와 같은 웹 서버와 WSGI규격으로 연동하기 위한 파일..

8) 루트/views.py

view.py 이름과는 별상관없어보이는 로직을 담당하는 파일이다. 함수형뷰 & 클래스형 뷰 모두 이곳에 정의한다. 앞으로 장고프로젝트를 진행할때 가장 많이 다루게 되는 파일이다.

9) migrations 디렉토리

models.py 파일에 정의한 테이블 구조를 manage.py의 makemigrations 옵션을 통해 생성되는 파일이 저장되는 디렉토리, 즉 모델을 변환하여 migrations 폴더에 저장한다!

10) models.py

장고 핵심기능인 ORM과 관련된 파일. 단순하게는 데이터 베이스의 테이블을 정의하는 파일
장고에서는 SQLite3 라는 파일기반 경량화 DB를 제공한다. 별도의 설치없이 사용 할수 있지만, 프로젝트가 좀만 커지면 ^^ 안쓰게 된단다~
이 데이터베이스를 사용할수 있게 하는 것이 ORM이다.

Object Relational Mapping, 객체 관계 맵핑

객체와 관계형 데이터베이스의 데이터를 자동으로 연결해주는 것을 말한다. 객체지향 프로그래밍은 클래스를 사용하고, 관계형 데이터베이스는 테이블을 사용한다. 객체 모델과 관계형 모델 간에 불일치가 존재 하게 되는데, ORM을 통해 객체 간의 관례를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다.

  • Database data <--- Mapping ---> Object field

이 ORM을 사용하며 원하는 모델을 작성하고 다루는 곳이 models.py파일, 데이터베이스를 잘 몰라도 models.py를 통해 DB를 관리할 수 있다!

11) 앱명/admin.py

admin 사이트에 모델 클래스를 등록해주는 파일.

12) 앱명/apps.py

애플리케이션 설정 클래스 정의

13) test.py

유닛테스트(단위테스트) 파일

14) templates 디렉토리

프로젝트를 진행하면서 필요할때 생성한다. 템플릿파일들이 들어있으며, 장고가 템플릿을 찾으러 가면 templates폴더를 먼저 찾게 된다.

15) static 디렉토리

css, image, javascript파일들이 들어있다. 보통은 프로젝트에 static과 앱/static을 두고 사용한다.

16) logs 디렉토리

프로젝트를 진행하면서 필요할때 생성한다. 로그 파일이 있으며 sttings.py파일의 LOGGING 항목으로 지정한다.

개발 서버 실행

  • 프로젝트 폴더로 이동
  • 해당 가상환경 선택

python manage.py runserver 명령어를 통해 서버 실행

  • localhost:8000/
  • 127.0.0.1:8000/

브라우저를 통해 위 주소로 이동했을때의 화면이다! 잘 설치되어 서버가 실행되고 있고, 터미널에서도 정상작동되어 아래와 같이 요청이 온것을 확인 할 수 있다.

포트 변경하기

python manage.py runserver <포트넘버>
python manage.py runserver 8080

profile
TIL 기록 블로그 :: 문제가 있는 글엔 댓글 부탁드려요!

0개의 댓글