(TIL12) Django

SooHyung Kim·2020년 4월 6일
0

django

목록 보기
1/5

가상환경 설치

  • conda create -n django_wecode python=3.8
    (항상 파이썬 버전을 같이 생성)

  • conda activate django_wecode

Django 설치

  • pip install django
  • 설치 확인을 하려면 django-admin --version 실행

프로젝트 만들기

  • django-admin startproject test01

    • 만약 생성부터 다른 이름으로 생성하고 싶다면, 디렉토리를 생성한 후(ex, mkdir django_project)
      안에 django-admin startproject test01 . => .이 중요함(현재 디렉토리 안에 프로젝트를 생성하겠다는 의미)

        .(test01)
        ├── manage.py
        └── test01
            ├── __init__.py
            ├── asgi.py
            ├── settings.py
            ├── urls.py
            └── wsgi.py

장고에서는 프로젝트를 생성할 때 안에 동일한 네임의 디렉토리를 생성해주고 있음,
꼭 바깥의 디렉토리와 안의 디렉토리 명이 같을 이유는 없으며 내부의 디렉토리가 더 중요

파일 설명

  • manage.py

    • 프로젝트를 실행 및 관리해주는 파일, 이 파일을 통해서만 실행, 실질적으로 프로젝트가 생성되고 난 후에는 manage.py가 총괄하고 있음(이후에는 django-admin의 역할을 함)
  • __init__.py

    • 모듈로써 동작한다는 의미
      파이썬에서는 던더가 스페셜 메소드를 의미.
  • asgi.py

    • 비동기 서버, 서버를 올려주는 인터페이스, 서버 역할을 동작해주는 파일(파이썬 3.0대에서 도입이 되었음)
  • wsgi.py

    • 웹서버게이트웨이, 웹서버를 만들어주는 기능을 함

    • 둘 다 장고라서 있는 것이 아닌 파이썬에서 통신에 관한 서비스를 만들고 싶을 때는 두가지 인터페이스를 가지고 와서 진행을 하고 있음. 다른 라이브러리들에도 둘다 가지고 있음

(현재 단계에서는 위의 두 가지파일에서 구현을 하지는 않으며, 웹 프레임워크에 있어야만 하는 파일들이라는 것을 인지)

동기작업 : 통신으로 치면 프로세스가 전달되고 물려있으면 다른 작업을 할 수 없음
비동기작업 : 동기와 달리 채팅처럼 서로 주고 받는 것.(대표적으로 채팅 서비스)

  • urls.py

    • url경로의 기준이 되는 파일
  • settings.py

    • 설정 관련 내용

root directory :

  • 설정 정보, 도구들을 가지고 있는 중요한 디렉토리를 의미함

  • 실행 기준은 최상위 디렉토리 기준(manage.py가 루트 디렉토리를 의미함)

장고 실행 과정

  • 웹서버의 요청(request)를 받아 url 파싱 후 로직을 담당하는 View, 데이터베이스를 담당하는 Model을 거쳐 응답(response)를 전달

  • 개발자는 위의 과정의 반대로 개발을 진행한다고 생각하면 됨

회원가입 앱 만들기

  • 장고에서 앱을 시작하기 위해서는 다음과 같은 명령어를 실행

    • python manage.py startapp user(앱 이름)

    • 실행을 하고 커맨드에 tree를 입력하면 user 디렉토리를 확인할 수 있음

      ├── user
      │   ├── init.py
      │   ├── admin.py
      │   ├── apps.py
      │   ├── migrations
      │   │   └── init.py
      │   ├── models.py
      │   ├── tests.py
      │   └── views.py
      ├── db.sqlite3
      ├── manage.py
      └── test01
      ├── init.py
      ├── pycache
      │   ├── init.cpython-38.pyc
      │   ├── settings.cpython-38.pyc
      │   ├── urls.cpython-38.pyc
      │   └── wsgi.cpython-38.pyc
      ├── asgi.py
      ├── settings.py
      ├── urls.py
      └── wsgi.py

  • migrations : 앱 내의 models.py의 데이터베이스의 수정 사항이 순서대로 쌓이는 것

  • models.py

    • 데이터베이스와의 동기화를 담당하는 파일로, 앱 생성 시 가장 먼저 작성하며, 가장 많은 고민이 필요한 파일

    • 생성, 수정 시에는 showmigrations -> makemigrations -> migrate 3단계를 진행

  • tests.py

    • 유닛테스트, 테스트코드 작성
  • views.py

    • 요청받은 데이터를 어떻게 응답할 지에 대한 로직을 담당하는 파일로, 클래스, 함수 등을 작성하여 리턴
  • urls.py

    • 메인 url 파일에서 앱의 url로 include 해주면 view 파일을 통해 또 다른 동작을 실행

    • 메인 url 파일에서 모든 엔드포인트를 구현해도 무방하나, 따로 만드는 이유는 각 앱의 url 경로가 복잡해질 수도 있기 때문에 따로 생성

필수 사항
1. app을 생성했을 때에는 settings의 installed_apps에 앱을 추가
2. app의 models의 생성, 수정이 되었을 때에는 makemigrations와 migrate를 필수로 진행

profile
Slow and steady win the race

0개의 댓글