Django - 튜토리얼 part1 (앱 생성 / View 작성 / url 추가)

Joey Lee·2020년 4월 28일
0

Django

목록 보기
1/23

튜토리얼 페이지 바로가기

튜토리얼의 설문조사 기능이 있는 mysite라는 프로젝트를 장고로 만드는 과정을 진행합니다. 가상환경 설정 뒤 장고를 우선 먼저 설치합니다.

0. 사전 세팅 작업

1) 가상환경 만들기

conda create -n "가상환경이름(=프로젝트명") python=3.7
2) 가상환경 활성화

conda activate project명

3) 장고 설치
pip install django

1. 프로젝트 만들기

$ django-admin startproject mysite
mysite 프로젝트를 만들면 mysite란 폴더가 생성되면서, 아래와 같은 폴더와 문서들이 자동으로 생성됩니다.

mysite
├── manage.py
└── mysite
    ├── __init__.py
    ├── asgi.py
    ├── settings.py
    ├── urls.py
    └── wsgi.py
  • manage.py : 장고 프로젝트를 관리하는 프로그램
    -> 프로젝트 어플리케이션 생성, 데이터베이스 조정, 테스트 서버 실행 등
    -> ex) python manage.py runserver (0.0.0.0:8000)
  • settings.py : 프로젝트 구성하는 어플리케이션과 데이터베이스 등 설정
  • urls.py : 서비스가 처리할 수 있는 URL목록을 기록한 파일
  • wsgi.py : WSGI를 지원하는 웹서버와의 연동 설정 파일

2. 서버 동작 확인

프로젝트가 잘 만들어졌는지 확인하기 위해 서버를 실행시켜봅니다. 서버 실행을 위해서는 manage.py 파일이 있는 mysite 디렉토리로 이동한 뒤, manage.py를 실행시켜야 합니다.

$ python manage.py runserver

아래와 같이 뜬다면 제대로 실행되고 있는 것입니다. 아래 url를 클릭하면 확인할 수 있습니다. ctrl + c를 누르면, 서버를 종료하게 됩니다.

Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.

February 05, 2020 - 05:42:01
Django version 3.0.3, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

3. 설문조사 앱 만들기

장고 프로젝트는 하나 이상의 어플리케이션(App)으로 구성됩니다. 앱은 웹서비스 중 하나의 기능을 의미합니다.

$ python manage.py startapp polls
polls란 앱을 만들게 되면 polls라는 폴더와 함께 db.sqlite3라는 데이터베이스가 생기고, polls 폴더 하위로 다양한 문서들이 자동으로 생성됩니다.

mysite
├── db.sqlite3
├── manage.py
├── mysite
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-37.pyc
│   │   ├── settings.cpython-37.pyc
│   │   ├── urls.cpython-37.pyc
│   │   └── wsgi.cpython-37.pyc
│   ├── asgi.py
│   ├── settings.py
│   ├── urls.py
│   └── wsgi.py
└── polls
    ├── __init__.py
    ├── admin.py
    ├── apps.py
    ├── migrations
    │   └── __init__.py
    ├── models.py
    ├── tests.py
    └── views.py
  • migrations 디렉토리 : 향후 서비스 개발간 저장되는 데이터 모델을 변경하면 DB에 반영할 때 사용하는 변경정보를 기록, 임시보관하는 장소
  • admin.py : 장고 어드민을 사용할 때 필요한 설정 파일
  • models.py : 모델 클래스를 구현하는 파일
  • tests.py : 앱 테스트 코드를 넣는 파일
  • views.py : 뷰 함수들을 구현하는 파일
  • 장고는 가능한 빠르게 웹 서비스를 만들 수 있는 환경을 제공함으로 개발자가 채워넣어야 하는 코드를 담을 파일을 미리 생성해 놓고 있음
  • 준비된 파일에 장고 프레임워크를 사용하여 코드를 채우면 나머지는 장고가 알아서 처리해 줌

3. Polls 앱 INSTALLED_APPS에 추가

장고는 프로젝트를 구성하는 앱을 리스트로 관리합니다. survey/setting.py를 열어 INSTALLED APPS 상수에 주어진 리스르를 확인한 뒤, 새롭게 생성한 polls 앱을 추가해 줍니다. INSTALLED_APPS에 추가되지 않은 앱은 장고에서 관리되지 않으며 향후 구현할 뷰 함수, 앱 모델 등을 사용할 수 없게 됩니다.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'polls',
]

4. View 작성하기

polls 폴더에서 파일을 열어서 views.py 파일을 아래와 같이 편집합니다.
$ vim views.py

polls/views.py

from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

5. urls.py에 url 등록

  • urls.py에 장고가 처리할 수 있는 URL패턴을 등록함
  • 패턴 등록은 raw string이라는 특수한 스트링을 사용
  • Request가 요청하는 URL이 urls.py에 등록되어 있는지 조회 후
  • 등록되어 있다면 함께 등록된 함수를 Http Request와 함께 실행
  • 등록되어 있지 않다면 에러 메시지를 클라이언트에게 전달

만든 뷰를 호출하기 위해 url에 연결해 줍니다. 아래와 같은 명령어로 polls 폴더 안에 있는 urls.py 파일을 생성하고, 편집해 줍니다.

$ vim urls.py

polls/urls.py

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]

그 다음에는 polls.urls의 URLconf를 mysite/urls.py에 포함시켜줍니다.

URL패턴 등록방법

  • url패턴은 urlpatterns 변수값을 수정
  • url패턴은 반드시 (패턴, 함수) 페어로 추가
  • 패턴을 생성하는 함수 url은 다음과 같이 실행
  • 함수명은 해당 함수가 위치하는 패키지의 경로로 입력
    path(<url패턴>, <함수명> [, name=<매핑명>])

mysite/urls.py

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
  path('admin/', admin.site.urls),
  path('polls/', include('polls.urls')),
]

서버에서 잘 작동하는지 다시 서버를 실행해 봅니다.
$ python manage.py runserver

정상이라면 http://localhost:8000/polls/ 에서 Hello, world. You're at the polls index. 문구가 나타납니다.

--

  • 중요 단축키 : Ctrl + C 서버 구동 중단, 작업 중단 시 break 거는 키워드로 다시 command-line으로 돌아감.
profile
안녕하세요!

0개의 댓글