[Django] 설치/실행

김영환·2020년 10월 31일

django

목록 보기
1/5
post-thumbnail

Django ?

파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임워크(web application framework) 입니다.
웹사이트를 구축 할 때, 비슷한 유형의 요소들이 항상 필요합니다. 오래전에 어떤 웹 개발자들이 웹 사이트를 개발할 때 서로 비슷한 문제들에 직면한다는 것을 깨닫고 프레임워크를 만들었답니다.

  • 사용자 인증
    - 회원가입
    - 로그인
    - 로그아웃
  • 관리자
    - 패널
    - 폼
    - 파일 업로드

Django가 필요한 이유?

편지(request 요청)가 도책했는지 확인해주는 메일박스(port 포트)가 있다고 상상해보세요.
웹 서버는 받은 편지를 읽고 웹 페이지와 함께 답장을 준답니다. 그런데 무언가를 주고 싶을 때는 그안에 내용이 있어야 하죠. 장고는 그 특정 콘텐츠를 만들 수 있는 역할을 합니다.

Django 요청 과정

  1. 웹서버의 요청이오면 장고 urlresolver에서 URL(Uniform Resource Locator)와 패턴 목록이 맞는지 가져와 처음부터 하나씩 대조합니다.
  2. view에서 요청 변경 권한이 있는지 확인후, 작업에 대한 설명을 수정 합니다.
  3. view는 답장을 생성하며, 장고는 그 답장을 그 사용자의 웹 브라우저에 보내주는 역할을 합니다.

장고 설치하기

pip가 최신 버전인지 확인합니다.

(서버이름) ~$ python3 -m pip install --upgrade pip

장고 설치

(서버이름) ~$ pip install django~=2.0.0
Collecting Django~=2.0.6
Downloading Django-2.0.6-py3-none-any.whl (7.1MB)
Installing collected packages: Django
Successfully installed Django-2.0.6

장고 버젼 확인

~$ python -m django --version

장고 실행

장고 프로젝트를 설정하는 일부 코드(데이터베이스 구성, 장고관련 옵션 및 애플리케이션 관련 설정을 포함하여 django 인스턴스에 대한 설정 모음)를 자동으로 생성해주는 과정

명령 줄에서 cd코드를 저장할 디렉토리로 이동 한 후 다음 명령을 실행합니다.

$ django-admin startproject [파일명(ex)mysite]

mysite startproject 생성

$ django-admin startproject mysite

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
  • 외부 mysite/ 루트 디렉터리는 프로젝트 컨테이너입니다. 원하는이름으로 변경가능합니다.
  • mange.py 이 Django 프로젝트와 다양한 방식으로 상호 작용을 합니다.
  • 내부 mysite/ 디렉토리가 python의 실제 패키지
  • mysite/__init__.py 이 디렉토리가 python 패키지로 간주되어야 함을 python에 알리는 빈 파일
  • mysite/settings.py 프로젝트에 대한 설정
  • mysite/urls.py프로젝트에 대한 URL 선언
  • mysite/asgi.py ASGI 호환 웹 서버의 진입 점
  • mysite/wsgi.py WSFI 호환 웹 서버의 진입 점

개발 서버

$ python manage.py runserver

앱 만들기

manage.pyd와 같은 디렉토리에 있는지 확인하고 진행합니다.

$ pythono manage.py startapp [app 이름]

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

project에 내 app 등록하기

'[app 이름].apps.PollsConfig'

INSTALLED_APPS = [
    '[app 이름].apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

Django가 앱이 포함됐다는 사실을 알게 되었습니다.

  • apps 하위에 있는 config 모듈의 네이밍(nameing)은 앱이름+Config 이며, 앱의 제일 앞 글자만 대문자로 작성된다
    > 앱이 포함됬다는걸 django에게 알려주는 환경설정을 안해주면 이러한 오류를 뱉어낸다. 나는 products 라는 앱이 연결되있다고 설정해주었다. 'products.apps.PollsConfig'

데이터베이스 생성하기

django를 설치하면 기본적으로 SQLite를 설치하도록 구성되어있다.
mySQL를 사용하려면 환경설정 세팅을 변경해주어야된다.

create database [데이터베이스 이름] character set utf8mb4 collate utf8mb4_general_ci;
mysql을 실행시키고 데이터 show databases; 로 확인하면 데이터베이스가 존재하는 걸 확인후

모델 활성화

python makemigrations [apps 이름]

django에게 모델을 일부 변경했으며 변경 사항이 마이그레이션으로 저장되기를 원한다고 말하는 것

python manage.py migrate

적용되지 않은 모든 마이그레이션을 가지고와 데이터베이스를 실행한다.

python manage.py shell

shell에서 table에 데이터를 추가해줍니다!!

0개의 댓글