????[Django] 설문조사 애플리케이션 예제 (1) - Django 프로젝트 구조 알아보기????

 

이 글은 Django 공식 문서의 Getting Started를 참고하여 정리한 글입니다. ( 링크 )

 

 

1. Django 훑어보기

Django는 Python Web Framework이며, 또한 그 자체로 웹 서버 역할을 할 수 있습니다.

그런데 Django는 웹 서버 역할을 할 목적으로 설계된 것이 아니기 때문에 Django 앞에 웹 서버를 두는 것이 바람직하다고 합니다.

 

Django의 특징을 간단하게 살펴보면 다음과 같습니다.

1) ORM 내장 ( default DB : sqlite3 )

Django는 ORM이 내장되어 있기 때문에 테이블을 객체로서 관리할 수 있습니다.

또한 SQL 쿼리를 직접 작성하지 않고, 메서드 호출만으로 데이터 조작이 가능합니다.

기본적으로 sqlite3를 사용하지만, 얼마든지 다른 DB로 바꿀 수 있습니다.

 

2) DB 관리를 위한 admin 페이지 제공

브라우저에 상에서 " Django Server IP/admin "경로에 접근하면 GUI로 테이블 생성 및 데이터 조작이 가능합니다.

이를 admin 페이지라고 하는데, admin 페이지는 커스터마이징이 가능합니다.

 

3) MTV 모델 ( Model - DB / Template - HTML / View - Controller )

Django는 많은 프레임워크에서 사용하는 MVC 모델과 이름이 다릅니다.

그런데 이름만 다를 뿐이지, 결국은 MVC 모델입니다.

 

4) 우아한 URL

제가 느끼기에 Django는 개발자가 우아한 URL 작성을 하도록 유도하는 것 같습니다.

그만큼 매력적이라는 뜻인데, URL을 정규식으로 작성할 수도 있고, 동적으로 변하는 path variable을 깔끔하게 작성할 수 있습니다.

(ex)  path('articles/<int:year>/<int:month>/', views.month_archive)

(ex)  url(r'^admin/', admin.site.urls),

 

5) Template 시스템

HTML 문서에 View로 부터 받은 Python 변수, if문, for문 등을 작성할 수 있도록 Template 시스템을 제공합니다.

그런데 Template 시스템에서 제공하는 문법은 Python 문법과 다른 것이기 때문에 별도의 학습이 필요합니다.

 

 

 

 

이상으로 공식문서에서 소개된 Django의 특징을 간단하게 정리해보았습니다.

 

 

 

2. Django 설치

Django 설치는 아래의 명령어를 입력하여 매우 간단하게 설치할 수 있습니다.

$ pip install django

 

그런데 Django가 지원하는 Python이 다르기 때문에 이를 참고해서 Django 버전을 설치해야 합니다.

공식 문서에 따르면, Python2.7을 지원하는 마지막 버전은 Django1.11 이고 최신 버전의 Python이 기능도 많고 빠르기 때문에 최신 버전의 Python을 사용하는 것이 좋다고 합니다.

 

 

 

 

3. Django 프로젝트 및 애플리케이션 생성

Django에서는 프로젝트와 애플리케이션 구분을 명확히 해야 합니다.

애플리케이션은 특정한 기능을 수행하는 웹 어플리케이션을 말하며, 프로젝트는 이런 특정 웹 사이트를 위한 애플리케이션들과 각각의 설정들을 한데 묶어놓은 것 입니다.

즉, 프로젝트는 다수의 app 을 포함할 수 있습니다.

 

 

1) 프로젝트 생성

먼저 Django 프로젝트를 생성할 디렉터리로 이동한 후, mysite라는 이름의 프로젝트를 생성하겠습니다.

 

$ django-admin startproject mysite

django-admin은 Django에서 제공하는 command-line 유틸리티입니다.

처음 프로젝트를 생성할 때만 사용할 것이며, 이후로는 프로젝트를 생성할 때 같이 생성된 manage.py를 통해 명령어를 작성할 것입니다.

 

이제 생성된 프로젝트를 확인해보고, 각각이 어떤 파일인지 알아보겠습니다.

 

(1) mysite

가장 바깥에 있는 디렉터리는 단순히 프로젝트를 담는 역할을 합니다.

하위에 있는 mysite 디렉터리와 이름이 겹치므로, 헷갈리지 않도록 이름을 바꾸는 것이 좋습니다.

 

(2) mysite/mysite

내부에 있는 mysite 디렉터리는 프로젝트 설정파일들을 모아놓은 디렉터리입니다.

 

(3) mysite/mysite/settings.py

루트 디렉터리를 포함한 각종 디렉터리 위치, 로그 형식, 프로젝트에 포함된 애플리케이션 등에 관한 프로젝트 전반적인 설정 파일입니다.

 

(4) mysite/mysite/urls.py

프로젝트의 URL을 선언합니다.

각 애플리케이션 마다 urls.py 파일을 생성하는 것이 좋기 때문에, mysite/mysite/urls.py 파일에는 애플리케이션의 url이 선언된 파일들의 경로를 작성하는 것이 좋습니다.

( 나중에 URL 매핑할 때 자세히 알아보겠습니다. )

 

(5) mysite/mysite/wsgi.py

프로젝트를 서비스 하기 위한 WSGI 호환 웹 서버의 진입점을 정의한 파일입니다.

즉 웹 서버와 Django 프로젝트를 연동할 때 사용되는 파일인데, Nginx와 Django를 연동하는 방법에 대해서는 여기를 참고해주세요 !

 

(6) mysite/manage.py

manage.py는 Django 프로젝트를 생성할 때 사용했던 유틸리티 django-admin.py와 관련이 있습니다.

앞으로 Django와 상호작용 하기 위해서는 이 파일을 이용할 것입니다. 

 

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

 

2) 설문조사 애플리케이션 생성

이제 프로젝트 내에 설문조사 애플리케이션을 생성하겠습니다.

 

$ cd mysite

$ python manage.py startapp polls

 

polls라는 애플리케이션을 생성했더니, Django가 여러 파일들을 제공합니다.

즉, " 애플리케이션 개발에 필요한 기본적인 파일들을 제공해줄테니, 파일들을 채워 넣어서 빠르게 개발을 하라 "는 Django의 철학입니다.

 

(1) polls/migrations 

migration은 Django가 모델의 변경사항을 저장하는 방법으로서, 디스크 상의 파일로 존재합니다.

polls/migrations 패키지는 이러한 파일들을 저장하는 디렉터리 입니다.

( 자세한 사항은 DB 테이블을 생성하면서 알아보겠습니다. )

 

(2) admin.py

Django는 테이블을 GUI 환경에서 관리하는 것이 가능합니다.

그런데 자동으로 모든 테이블이 admin페이지에서 관리할 수 있는 것이 아니고, admin 페이지에 테이블을 반영하기 위해서는 admin.py 파일에 admin 페이지에서 관리 할 모델을 작성해야 합니다.

 

(3) apps.py

애플리케이션의 설정 내용을 작성하는 파일입니다.

저는 Django가 실행될 때 어떤 파일이 실행되기를 바랐던 적이 있습니다.

그 때 apps.py 파일에 ready() 함수를 작성해서 해결했던 적이 있는데, apps.py 파일의 여러 기능에 대해서는 여기를 참고해주세요 !

 

(4) models.py

테이블 모델을 작성하는 파일입니다.

( 설문조사 애플리케이션을 구현할 때 사용하므로 그 때 자세히 알아보겠습니다. )

 

(5) tests.py

테스트 코드를 작성하는 파일입니다.

 

(6) views.py

Controller에 해당하는 View를 작성하는 파일입니다.

 

 

 

 

4. Django 서버 실행

지금까지 mysite 프로젝트와 polls 애플리케이션을 생성했습니다.

특별한 내용은 아무것도 작성하지 않았는데, 우선 서버가 잘 실행되는지 확인해보겠습니다.

 

$ python manage.py runserver

 

 

 

출력되는 URL( http:/127.0.0.1:8000/ )로 브라우저에서 접속해보면 Django의 기본 페이지가 출력됩니다.

Django 기본 포트 번호로 8000을 사용합니다.

 

 

** 참고

서버를 실행할 때 --norealod 옵션을 주면, 서버가 실행 중인 상태에서 파일을 변경해도 반영이 되지 않습니다.

 

 

 

 

5. Admin 페이지

서버를 실행한 상태에서 브라우저에서 http://127.0.0.1:8000/admin 경로로 요청하면, Admin 페이지를 볼 수 있습니다.

그러면 로그인을 해야 하는데, 아직 관리자 계정이 없으므로 계정을 생성해야 합니다.

 

$ python manage.py migrate

$ python manage.py createsuperuser

관리자 계정을 생성하기 위해서는 먼저, migrate를 해야 합니다.

migrate 명령은 mysite/settings.py 파일의 DATABASE 설정과 애플리케이션 생성할 때 제공되는 migrations에 따라 필요한 테이블을 생성합니다.

migrate를 하면 Users와 Groups 테이블을 Django가 자동으로 생성해주는데, 이는 mysite/settings.py 파일에 django.contrib.auth 애플리케이션이 등록되어 있기 때문입니다.

 

 

createsuperuser 명령어를 실행하면, admin 페이지에 로그인 하기 위한 정보들을 입력합니다.

 

 

정보들을 입력한 후, 생성한 계정으로 admin 페이지에 로그인을 하면 위와 같이 Groups와 Users 테이블이 생성되어 있는 것을 확인할 수 있습니다.

앞서 말씀드린 것처럼 admin페이지를 통해 GUI환경에서 테이블을 관리할 수 있습니다.

 

 

 

 

이상으로 프로젝트와 애플리케이션을 생성하여, 각 파일의 역할을 알아보았고, 서버를 실행하는 방법과 Admin 페이지를 로그인하는 방법도 알아보았습니다.

다음 글에서는 Model을 다루는 방법에 대해 알아보겠습니다.

 

[ 참고 ]

https://docs.djangoproject.com/ko/2.0/intro/

 

[출처] https://victorydntmd.tistory.com/258?category=703021

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
47 [python] 파이썬 f-string (파이썬 스트링 앞에 f') file 졸리운_곰 2021.07.17 446
46 [Python] 파이썬으로 복리 계산하기 file 졸리운_곰 2021.07.17 562
45 [python, 파이썬] 연습 문제: 복리 이자 계산 졸리운_곰 2021.07.17 925
44 [python] 파이썬 기초 문법 정리 졸리운_곰 2021.05.17 861
43 [python] [GPU]GPU 사용 Python 코드 실행 졸리운_곰 2021.04.21 567
42 [python] 파이썬 스케줄 수행 - schedule, apscheduler file 졸리운_곰 2020.07.26 454
41 파이썬 스크립트 스케줄링하기 file 졸리운_곰 2020.07.26 1011
40 Python Scheduler 만들기(APScheduler) 졸리운_곰 2020.07.26 1089
39 [python] 주피터 노트북에서 패키지 설치 졸리운_곰 2018.12.06 1225
38 Data Structures and Algorithm In python 파이썬으로 자료구조와 알고리즘 : 출처 인터넷 file 졸리운_곰 2018.08.27 514
37 Mastering Basic Algorithms in the Python Language 이북 출처 인터넷 file 졸리운_곰 2018.08.27 629
36 python dev 사용자 입력과 출력 졸리운_곰 2018.03.01 471
35 APScheduler 사용기 file 졸리운_곰 2018.02.09 1070
34 [파이썬, 조각코드] 스케쥴러 만들기. 졸리운_곰 2018.02.09 795
33 Python virtualenv 정리 (Linux/Windows) 졸리운_곰 2018.01.23 486
32 [Python] 코드난독화 file 졸리운_곰 2018.01.19 1000
31 Python - Way to recursively find and replace string in text files 졸리운_곰 2017.08.30 478
30 Python Coding for Minecraft 마인크래프트를 위한 파이썬 프로그래밍 file 졸리운_곰 2017.05.05 1794
29 Atom을 Python 개발 툴로 사용하기 file 졸리운_곰 2017.03.06 938
28 IPython Notebook을 통한 데이터 분석 #3 file 졸리운_곰 2017.03.05 754
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED