kkamagi's story

IT, 정보보안, 포렌식, 일상 공유

Programming

[Django] Django 설치 및 시작

까마기 2015. 6. 29. 10:44
728x90
반응형
Django 설치 및 시작


* 기본

뷰-템플릿-모델 순으로 배운다.    (
View - Templet - Model)

파이썬을 쓰다보면 Django 같은 패키지가 많다.

무분별하게 사용하다 보면 꼬이는 경우도 있다.

하나의 프로그램 <ex) Django >를  위한 환경을 만들어 주는게 virtualenv 명령어이다.

이제 venv 라는 가상 환경을 만들어주면 venv 아래 bin 명령어가 생긴다.

->

$ cd
$ pwd
/home/web

$ virtual venv
$ cd venv
$ pwd
/home/web/venv

$ ll
drwxrwxr-x  5 web web 4096 Jun 28 15:30 ./
drwxr-xr-x 33 web web 4096 Jun 28 15:25 ../
drwxrwxr-x  3 web web 4096 Jun 28 15:30 bin/
drwxrwxr-x  2 web web 4096 Jun 28 15:25 include/
drwxrwxr-x  3 web web 4096 Jun 28 15:25 lib/

$ source venv/bin/active
-> venv 활성화

(venv) $ pip install django==1.7.3      //1.7.3 버전으로 설치한다.

그냥 pip install django 로 하게 되면 최신 버전을 받게 되고, 최신 버전인 1.8. 대는

실습 하는데 문제가 있을 수도 있기 때문이다.

Virtual Box 에서 로컬(윈도우)PC의 C:\workspace 로 공유 폴더를 설정했기 때문에  /home/web/workspace 에서 파일을 만들어주면 C:\workspace에서 보이게 된다.



* Django Project 생성

(venv) $ django-admin.py startproject survey     // survey라는 장고프로젝트 생성
(venv) $ cd survey
(venv) $ pwd

(venv) $ python manage.py runserver 0.0.0.0:8000  &   //장고 데몬 실행

Virtual Box에서 ip 확인 후 브라우저에서 

-> 장고 디폴트 페이지 나오는지 확인 ( It works!! )

* django-admin.py -> 이 파일을 사용하여 장고의 명령어를 실행할수 있다.


개발을 위한 호스트 설정

< 첫 번째 장고 프로젝트 > - 투표 서비스 만들기


각자의 운영체제에 맞게 다운로드

sublime text 설치 -> 실행 -> view -> side bar -> C:\workspace\survey 폴더를 open file로
드래그

- Django Application

Django Project는 하나 이상의 Application으로 구성

poll : 어플리케이션이름

(venv) $ python manage.py startapp polls
python manage.py startapp <어플리케이션 이름>
: 투표기능을 위해 polls 라는 어플리케이션 생성

어플리케이션을 만들면 해당 어플리케이션 이름으로 디렉터리가 생기고, 다시 survey 디렉터리가 생긴다.

# /home/web/workspace/survey

drwxrwxrwx 1 web web    0 Jun 28 16:15 ./
drwxrwxrwx 1 web web    0 Jun 28 15:38 ../
-rwxrwxrwx 1 web web 3072 Jun 28 16:02 db.sqlite3*
-rwxrwxrwx 1 web web  249 Jun 28 15:38 manage.py*
drwxrwxrwx 1 web web 4096 Jun 28 16:15 polls/
drwxrwxrwx 1 web web    0 Jun 28 15:38 survey/

- 어플리케이션 디렉터리 내 파일 리스트


drwxrwxrwx 1 web web 4096 Jun 28 16:15 ./
drwxrwxrwx 1 web web    0 Jun 28 16:15 ../
-rwxrwxrwx 1 web web   63 Jun 28 16:15 admin.py*
-rwxrwxrwx 1 web web    0 Jun 28 16:15 __init__.py*
drwxrwxrwx 1 web web    0 Jun 28 16:15 migrations/
-rwxrwxrwx 1 web web   57 Jun 28 16:15 models.py*
-rwxrwxrwx 1 web web   60 Jun 28 16:15 tests.py*
-rwxrwxrwx 1 web web   63 Jun 28 16:15 views.py*

setting.py 파일에 polls 추가

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
) + ('polls',)


* View 함수
- view 함수 및 url dispatcher 예제를 활용하여 url 등록해보기 ("poll" application 안에서 )



<views.py>


view 함수에 request 파라미터에는 사용자가 요청한 것이며 데이터가 담겨잇다.

from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.

def hello_django(request):
     return HttpResponse("Hello, Django")

위와 같이 view.py 작성한 내용을 어떻게 출력할 것인가? -> urls.py 에 등록하면

위의 함수를 호출할 수 있다.


<urls.py>

- url 패턴 등록하기

url(r'어플리케이션명/(패턴)/$', '어플리케이션명.views.views.py 내에 정의한 함수명', name='함수명'),

아래의 패턴 등록 중 위 views.py에 index 함수 부분만 설명하자면, 
url(r'polls/$', 'polls.views.index', name='index'),
위와 같이 정의.
-----> 다시 정리 하자면,
url 패턴 등록시 .....

url(<URL 패턴>, <함수명>[, name=<매핑명>]) 

함수 이름을 변수처럼 쓰려면 모듈을 import해야되는데

장고에서는 꼭 그렇게 하지 않아도 문자열로 시작점부터 끝까지 등록을 하게 되면

함수명에 

앱.파일이름.함수이름 형식으로 사용가능.
ex) 'polls.views.hello_django'


- urls.py 에서

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

urlpatterns = patterns('',
    # Examples:
    # url(r'^$', 'survey.views.home', name='home'),
    # url(r'^blog/', include('blog.urls')),

    url(r'^admin/', include(admin.site.urls)),
    url(r'^hello/', 'polls.views.hello_django', name='hello_django')
)



http://xxx.xxx.xxx.xxx/polls 접속 테스트



===================================================


반응형