이번 포스팅에서는 Django Web Framework의 설치와 환경 설정에 대한 알아볼까 한다.

Django (web framework)

From Wikipedia, the free encyclopedia

Django (/ˈæŋɡ/ jang-goh)[4] is a free and open source web application framework, written in Python, which follows the model–view–controller (MVC) architectural pattern.[5][6] It is maintained by the Django Software Foundation (DSF), an independent organization established as a 501(c)(3) non-profit.

Django's primary goal is to ease the creation of complex, database-driven websites. Django emphasizesreusability and "pluggability" of components, rapid development, and the principle of don't repeat yourself. Python is used throughout, even for settings, files, and data models. Django also provides an optional administrative create, read, update and delete interface that is generated dynamically through introspectionand configured via admin models.


위키백과를 참고해 찾아보면 장고 혹은 쟁고라 불리우며 무료 오픈소스 웹 어플리케이션 Framework라고 되어 있다. 또한 MVC ( Model-View-Controller) 아키텍처 패턴을 따른다고 되어있다. 특히 장고는 데이터베이스 기반의 웹 프레임 워크 개발에 용이하게 되어 있다고 한다.

그렇다면 Django를 사용하기 위한 설치 과정과 환경 설정 과정을 알아보도록 하자.

  1. Django Install

  • Django 설치

easy_install을 이용해 Django를 설치 한다.


 $ sudo easy_install Django


  • Django 설치 확인

아래 명령어를 통해 Django가 제대로 설치 되었는지 확인한다.

$ python

>>> import django

>>> print(django.get_version())

1.8.x 


  • Django Project 생성

아래 명령어를 통해 Django Project를 생성한다.

 $ django-admin startproject project_name

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py


  • Django app 생성

아래 명령어를 통해 Django app을 생성한다.

 $ python manage.py startapp app_name

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        wsgi.py

app_name/ __init__.py admin.py migrations/ __init__.py models.py tests.py views.py





  1. VirtualEnv Install (가상환경)

VirtualEnv를 사용 하는 이유는 아래와 같다.

프로젝트만의 가상 공간을 만들고 필요한 모듈들을 따로 설치 및 관리 할 수 있다.

프로젝트 간 Python 버전 충돌, 모듈 버전 충돌로부터 해방 될 수 있다.

실제 적용할 서버와 동일한 환경을 만들어 작업을 진행 할 수 있다.


  • virtualenv 설치

아래 명령어를 통해 virtualenv를 설치 해준다.


 $ sudo pip install virtualenv

# 만약 pip가 없다면

$ sudo easy_install pip



  • setting

아래 명령어를 통해 virtualenv를 사용하기 위한 설정을 해준다.


$ cd project_name

$ virtualenv virtualenv_name

# “virtualenv_name”이라는 이름의 새로운 디렉터리가 생성된 것 확인.


  • 가상 공간 활성화

해당 프로젝트 내에서 아래의 명령어를 통해 virtualenv 를 활성/비활성화 시켜준다.


$ . virtualenv_name/bin/activate

# 프롬프트가 달라진 것 확인.

(venv)$

# 비활성화 하고 싶을 때는

$ deactivate



  1. Django settings.py 설정 하기

  • Logging(Debug) 사용하기

  • Logging은 디버깅 기능을 사용하고, 로그를 기록하기 위해 제공 되는 모듈 이다.

1. Django Install 에서 생성한 project에 접근 한다.

/project_name/ 경로의 settings.py 파일에 편집기를 통해 아래 코드를 추가한다.



LOGGING = {

   'version': 1,

   'disable_existing_loggers': False,

   'formatters': {                        # message 출력 포맷 형식

       'verbose': {

           'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",

           'datefmt' : "%d/%b/%Y %H:%M:%S"

       },

       'simple': {

           'format': '%(levelname)s %(message)s'

       },

   },

   'handlers': {

       'file': {

           'level': 'DEBUG',

           'class': 'logging.FileHandler',

           'filename': 'file_name.log',        # message가 저장될 파일명(파일명 변경 가능)

           'formatter': 'verbose'

       },

   },

   'loggers': {

       'django': {

           'handlers':['file'],

           'propagate': True,

           'level':'DEBUG',

       },

       'app_name': {                   # Project에서 생성한 app의 이름

           'handlers': ['file'],          # 다른 app을 생성 후 해당 app에서도

           'level': 'DEBUG',          # 사용하고자 할 경우 해당 app 이름으로

       },                                      # 좌측 코드를 추가 작성해서 사용

   }

}





logging을 사용할 app의 파일에 아래의 코드를 추가 한 뒤 사용하면 된다.


import logging

logger = logging.getLogger(__name__)

#       logger.debug()



console 에 아래의 명령어를 통해 logging을 실행 시킨다.

 $ tail -f filename.log


  • Installed_apps 설정

project_name/settings.py 파일에서 'INSTALLED_APPS’에 아래와 같이 app_name을 추가한다.

# Application definition

INSTALLED_APPS = (

   'django.contrib.admin',

   'django.contrib.auth',

   'django.contrib.contenttypes',

   'django.contrib.sessions',

   'django.contrib.messages',

   'django.contrib.staticfiles',

   'app_name',                         # ',' 빠트리지 않도록 주의한다.

) 


  • Templates 설정

project_name/settings.py 파일에서 'DIRS’ 부분을 아래와 같이 templates 파일 경로를 설정해준다.


TEMPLATES = [

 {

       'BACKEND': 'django.template.backends.django.DjangoTemplates',

       'DIRS': [os.path.join(BASE_DIR, 'templates')],

       'APP_DIRS': True,

       'OPTIONS': {

           'context_processors': [

               'django.template.context_processors.debug',

               'django.template.context_processors.request',

               'django.contrib.auth.context_processors.auth',

               'django.contrib.messages.context_processors.messages',

           ],

       },

   },

]


  • Database 설정

project_name/settings.py 파일에서 ‘DATABASES’ 부분을 다음 과 같이 설정해 준다. 아래는 mysql을 사용할 경우 이다.

# Database

# https://docs.djangoproject.com/en/1.8/ref/settings/#databases


DATABASES = {

   'default': {

       'ENGINE': 'django.db.backends.mysql',    # 사용할 DB Engine의 종류

       'NAME': 'database_name',                          # 해당 Engine에서 사용할 DB name

       'USER': 'database_user_id',                       # 해당 Engine에 접근 하기 위한 user_id (ex. root)

       'PASSWORD': 'database_password',        # 해당 Engine에 접근 하기 위한 password

       'HOST': 'localhost',

       'PORT': '',

   }

}

DATABASE_OPTIONS = {'charset': 'utf-8'}       # Database encoding 설정


다른 종류의 DB를 사용 할 경우 Django의 Documentation가 제공하는 아래 링크를 참고 하면 된다.

https://docs.djangoproject.com/en/1.8/ref/settings/#std:setting-DATABASES


  • Language 설정

project_name/settings.py 파일에서 'LANGUAGE_CODE' 부분을 다음과 같이 설정해준다.

LANGUAGE_CODE = 'ko-kr'


TIME_ZONE = 'Asia/Seoul'




  • Static files 설정

project_name/collected_statics 디렉터리를 생성 해준다.

project_name/settings.py 파일에서 'STATIC’  부분을 다음과 같이 설정 해준다.

# Static files (CSS, JavaScript, Images)


# https://docs.djangoproject.com/en/1.8/howto/static-files/


STATIC_ROOT = os.path.join(BASE_DIR, 'collected_statics')     #


STATIC_URL = '/assets/'


STATICFILES_DIRS =(

       os.path.join(BASE_DIR, 'static'),

)




프로젝트에 사용할 js, css파일은 project_name/static/ 의 경로에 넣어준다.

project_name/template 경로에 있는 HTML로 작성된 template 파일에 아래와 같이 적용해 사용한다.

{% load static %}

<link href="{% static 'css/bootstrap.css' %}" rel="stylesheet">

<script src="{% static 'js/jquery-2.1.3.js' %}"></script> 



아래 명령어를 통해 prject_name/static/ 에 있는 js, css 파일을 collected_statics 파일로 모아준다.

 $ python manage.py collectstatic

명령어 실행 시 아래와 같이 이미 존재하는 파일을 덮어씌울 것이냐는 질문을 하게 되면 'yes'라고 입력해주면 된다.

< 그림 Collectstatic 명령어 실행 결과 >



  1. Django url

  • Template에서 Static 파일을 사용하기 위해 4) Django setting의 Static files 설정과 더불어 project_name/urls.py 파일에도 아래와 같이 코드를 추가해 주어야 한다.


from django.conf.urls import include, url, patterns

from django.contrib import admin

from django.conf import settings

from django.conf.urls.static import static

from django.contrib.staticfiles.urls import staticfiles_urlpatterns


urlpatterns = [

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

] + static(settings.STATIC_URL, document_root = settings.STATIC_ROOT)


urlpatterns += staticfiles_urlpatterns()


이것으로 Django를 설치하고 환경설정을 위해 Setting 파일의 install_app, Template, DB, Static File, Language, Time Zone을 비롯해 디버깅과 로그 기록을 위한 Logging 모듈설정을 마치도록 하겠다.






'Newbie's Log' 카테고리의 다른 글

Deview 2015 Day 1참가 후기  (0) 2015.09.22
On-ly 2.0 project review  (0) 2015.08.18
Django 설치 및 환경설정  (0) 2015.08.03
Evernote API 사용하기  (0) 2015.07.29
주니어 개발자의 On-ly 2.0 프로젝트 경험기-개발편  (0) 2015.07.21
On-ly 소개 Prezi  (0) 2015.07.16
Posted by 한종민

댓글을 달아 주세요