본문 바로가기
OLD_달려라/Web

django ] 처음 시작하기(프로젝트&앱 생성하기)

by 달승 2020. 11. 26.

 

1.프로젝트 만들기

 

Django는 project를 구성하는 코드를 자동 생성합니다. 이 과정에서 데이터베이스 설정, Django 위한 옵션들, 어플리케이션을 위한 설정들과 같은 Django 인스턴스를 구성하는 수많은 설정들이 생성되는데, 초기 설정에 주의를 기울여야 합니다. 

command line에서 cd 명령으로 코드를 저장할 directory로 이동 한 후, 다음의 명령을 수행합니다. 

$ django-admin startproject mysite

[생성하고자 하는 프로젝트 이름을 'mysite'에 적어주세요.]

※ 
프로젝트를 생성할 때, Python 또는 Django에서 사용 중인 이름은 피해야 합니다.

특히, django(Django 그 자체와 충돌이 일어납니다)나, test(Python 패키지의 이름중 하나입니다) 같은 이름으로 지정하지 않습니다.

 



코드는 어디에서 서비스 되어야 할까요? 

과거의 PHP 를 작성해본 경험이 있다면(최근의 프레임워크 말고) 아마 코드 전체를 /var/www 같은 웹 서버의 DocumentRoot 에 넣으려고 하려고 할 수 있습니다.
하지만 Django에서는 python code가 DcoumentRoot에 있어서는 안 됩니다. (외부에서 Python 코드를 직접 열 수 있기 때문) 따라서 코드는 /home/mycode 와 같은 DocumentRoot 바깥에 두는 것을 권장합니다.

 

 

위 명령어를 수행하면 아래와 같은 directory가 생성됩니다.

1)mysite/ 
   manage.py 
   2)mysite/ 
       __init__.py 
       settings.py 
       urls.py 
       asgi.py 
       wsgi.py

각각의 파일의 용도를 설명하겠습니다.

mysite/
:: 1)번으로 표시된 mysite/는 root directory로 프로젝트의 container입니다. 따라서 이 파일명은 생성 후, 다른 이름으로 변경이 가능합니다.

manage.py
:: 이 파일은 Django 프로젝트와 다양한 방법으로 상호작용하는 command line utility입니다. 이 파일은 django-admin과 동일한 작업을 수행하지만, 프로젝트의 setting.py을 가리키고 있어 DJANGO_SETTINGS_MODULE 환경 변수도 설정합니다.
또한 pip를 통해 Django를 설치 한 경우 django-admin 스크립트가 시스템 경로에 있어야 합니다.

mysite/
:: 2)번으로표시된mysite/ 내부에는 프로젝트를 위한 실제 Python 패키지가 저장됩니다. 이 directory내의 이름을 이용하여 프로젝트의 어디서나 Python 패키지를 import할 수 있습니다. (예. mysite.urls와 같은 형식으로)

mysite/__init__.py
:: Python으로 하여금 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일입니다.

mysite/settings.py
:: 현재 Django 프로젝트의 환경 및 구성을 저장합니다. Django settings에서 환경 설정이 어떻게 동작하는지 확인할 수 있습니다.
:: A settings file is just a Python module with module-level variables. 
:: application definition, django page language & timezone 설정, 디버그 모드 설정 등 다양한 setting이 가능합니다.

mysite/urls.py
:: 현재 Django project 의 URL 선언을 저장합니다. Django 로 작성된 사이트의 《목차》라고 할 수 있습니다.

mysite/asgi.py
:: 프로젝트를 제공하기 위한 ASGI 호환 웹 서버의 진입점입니다. 

mysite/wsgi.py
:: 현재 프로젝트를 서비스하기 위한 WSGI 호환 웹 서버의 진입점입니다.

 

 

 

 

 

2. 프로젝트 디렉토리로 이동한 후, run server

 

$ python3 manage.py runserver

command 창에 출력된 url을 통해 django server에 진입합니다.

 

위와 같은 화면이 나온다면 성공!

 

 

 

3. Application 생성하기

$ python3 manage.py startapp 앱이름

[생성하고자 하는 앱 이름을 '앱이름'에 적어주세요.]

 

위 명령어 실행 후 생성되는 디렉토리는 다음과 같습니다.

앱이름/ 
   __init__.py 
   admin.py 
   apps.py 
   migrations/ 
       __init__.py 
   models.py 
   tests.py 
   views.py


urls.py 
:: urlpatterns 맵퍼는 경로들(특정 URL 패턴들)과 해당하는 뷰 함수에 대한 맵핑 목록들을 정의합니다. 만약 지정된 URL 패턴과 일치하는 HTTP 요청이 수신된다면 관련된 view 함수가 요청을 전달합니다. 
** 앱 생성 시 자동으로 만들어지지 않기 때문에 따로 생성해야 합니다.


view.py 
:: 뷰는 웹 클라이언트로부터 HTTP 요청을 수신하고 HTTP 응답을 되돌려주는 웹 어플리케이션의 심장입니다.
그 사이에 뷰는 데이터베이스에 접근하고 템플릿을 렌더링하기 위해 프레임워크의 다른 자원을 정리합니다. 

:: 장고 모델은 데이터베이스를 간단히 탐색하기 위한 쿼리 API를 제공합니다. 이 API는 다양한 조건을 통해 수 많은 필드를 빠르게 매칭시킵니다. (예를 들어, 정확하게 일치(exact), 대소문자 구분없이(case-insensitive), 해당 숫자보다 큰(greater than) 등이 있습니다.) 

models.py 
:: 장고 웹 어플리케이션은 모델(models)이라는 파이썬 객체를 통해 데이터를 관리하고 쿼리합니다. 모델은 필드 타입과 그들의 최대 크기, 기본 값들, 선택 목록 옵션, 문서의 도움말 텍스트, 폼(form)을 위한 labe text등을 포함하여 저장된 데이터의 구조를 정의합니다.  
 
app/templates/app/index.html 
:: 템플릿 시스템을 사용하면 페이지가 생성될 때 채워질 데이터에 자리 표시자를 사용하여 출력 문서의 구조를 지정할 수 있습니다.
** 앱 생성 시 자동으로 만들어지지 않기 때문에 따로 생성해야 합니다.


 

 

 

 

3. 최종적으로 생성된 디렉토리


프로젝트/ 

   manage.py 
   프로젝트/ 
          __init__.py 
          settings.py 
          urls.py 
          asgi.py 
          wsgi.py 
   앱이름/ 
          __init__.py 
          admin.py 
          apps.py 
          migrations/ 
                 __init__.py 
          models.py 
          tests.py 
          views.py 
          template/
                 index.html

 

 

** Project  vs  Application

앱은 웹 로그 시스템, 공개 기록 데이터베이스 또는 소규모 설문 조사 앱과 같은 작업을 수행하는 웹 애플리케이션입니다. 프로젝트는 특정 웹 사이트에 대한 구성 및 앱 모음입니다.

또한 프로젝트에는 여러 앱이 포함될 수 있고, 앱은 여러 프로젝트에 있을 수 있습니다. 

 

'OLD_달려라 > Web' 카테고리의 다른 글

django ] django 설치  (0) 2020.11.26
django ] django란?  (0) 2020.11.25
웹 프로그래밍 튜토리얼 ] poiemaweb  (0) 2020.11.13
HTML ] Elements  (0) 2020.11.10
HTML ] Basic Examples  (0) 2020.11.10

댓글