티스토리 뷰

study/Django

Django tutorial 따라하기 1

xoxowo 2022. 6. 28. 18:47

파이썬 프로젝트 시 가상 환경을 사용하는 이유는 여러 프로젝트를 하는 데 있어, 분리된 버전 및 패키지 설치 환경을 가질 수 있기 때문에 

프로젝트 실행 시 가상 환경을 켜줘야 한다고 한다. 

 

여러 가상 환경 프로그램 중 미니 콘다(miniconda)를 사용하여 장고(django) 튜토리얼을 따라 해 봤다.

 

 

가상 환경 생성

가상 환경을 생성하는 명령어로 가상 환경을 생성해준다.

가상 환경 생성 명령어 python 버전이 중요!
$ conda create -n 가상환경이름 python=3.8

실제 실행 과정 )

yujeong@xo-MacBook-Air ~ % conda create -n django_tutorial python=3.8        
Collecting package metadata (current_repodata.json): done
Solving environment: done

==> WARNING: A newer version of conda exists. <==
  current version: 4.12.0
  latest version: 4.13.0

Please update conda by running

    $ conda update -n base -c defaults conda

## Package Plan ##

  environment location: /Users/yujeong/opt/miniconda3/envs/django_tutorial

  added / updated specs:
    - python=3.8


The following packages will be downloaded:

    package                    |            build
    ---------------------------|-----------------
    certifi-2022.6.15          |   py38hca03da5_0         153 KB
    libffi-3.4.2               |       hc377ac9_4         106 KB
    pip-21.2.4                 |   py38hca03da5_0         1.8 MB
    python-3.8.13              |       hbdb9e5c_0        10.6 MB
    setuptools-61.2.0          |   py38hca03da5_0        1011 KB
    sqlite-3.38.5              |       h1058600_0         1.1 MB
    tk-8.6.12                  |       hb8d0fd4_0         2.9 MB
    ------------------------------------------------------------
                                           Total:        17.7 MB

The following NEW packages will be INSTALLED:

  ca-certificates    pkgs/main/osx-arm64::ca-certificates-2022.4.26-hca03da5_0
  certifi            pkgs/main/osx-arm64::certifi-2022.6.15-py38hca03da5_0
  libcxx             pkgs/main/osx-arm64::libcxx-12.0.0-hf6beb65_1
  libffi             pkgs/main/osx-arm64::libffi-3.4.2-hc377ac9_4
  ncurses            pkgs/main/osx-arm64::ncurses-6.3-h1a28f6b_2
  openssl            pkgs/main/osx-arm64::openssl-1.1.1o-h1a28f6b_0
  pip                pkgs/main/osx-arm64::pip-21.2.4-py38hca03da5_0
  python             pkgs/main/osx-arm64::python-3.8.13-hbdb9e5c_0
  readline           pkgs/main/osx-arm64::readline-8.1.2-h1a28f6b_1
  setuptools         pkgs/main/osx-arm64::setuptools-61.2.0-py38hca03da5_0
  sqlite             pkgs/main/osx-arm64::sqlite-3.38.5-h1058600_0
  tk                 pkgs/main/osx-arm64::tk-8.6.12-hb8d0fd4_0
  wheel              pkgs/main/noarch::wheel-0.37.1-pyhd3eb1b0_0
  xz                 pkgs/main/osx-arm64::xz-5.2.5-h1a28f6b_1
  zlib               pkgs/main/osx-arm64::zlib-1.2.12-h5a0b063_2

Proceed ([y]/n)?  y

Downloading and Extracting Packages
certifi-2022.6.15    | 153 KB    | ##################################### | 100% 
tk-8.6.12            | 2.9 MB    | ##################################### | 100% 
python-3.8.13        | 10.6 MB   | ##################################### | 100% 
setuptools-61.2.0    | 1011 KB   | ##################################### | 100% 
libffi-3.4.2         | 106 KB    | ##################################### | 100% 
pip-21.2.4           | 1.8 MB    | ##################################### | 100% 
sqlite-3.38.5        | 1.1 MB    | ##################################### | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate django_tutorial
#
# To deactivate an active environment, use
#
#     $ conda deactivate

 

가상 환경 실행

가상 환경을 생성하였으니 실행하는 명령어로 생성한 가상 환경을 실행시켜준다.

생성한 가상환경 실행 명령어
% conda activate 가상환경이름

실제 실행 과정 ) 정상적으로 실행됐다면 터미널 앞에 (가상 환경 이름)이 뜬다.

yujeong@xo-MacBook-Air ~ % conda activate django_tutorial
(django_tutorial) yujeong@xo-MacBook-Air ~ %

 


가상 환경을 실행시켰다면 django 패키지를 설치해야 하는데 djago tutorial에 나와있는 방법으로 설치해준다.

 

장고 설치

장고 설치 명령어로 가상 환경 내부에 설치해준다. (프로젝트를 생성할 때마다 새로운 가상 환경을 실행하고 장고를 설치해줘야 한다.)

% python -m pip install Django

실제 실행 과정 )

(django_tutorial) yujeong@xo-MacBook-Air ~ % python3 -m pip install Django
Collecting Django
  Downloading Django-4.0.5-py3-none-any.whl (8.0 MB)
     |████████████████████████████████| 8.0 MB 749 kB/s 
Collecting backports.zoneinfo
  Downloading backports.zoneinfo-0.2.1.tar.gz (74 kB)
     |████████████████████████████████| 74 kB 1.0 MB/s 
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Collecting asgiref<4,>=3.4.1
  Downloading asgiref-3.5.2-py3-none-any.whl (22 kB)
Collecting sqlparse>=0.2.2
  Using cached sqlparse-0.4.2-py3-none-any.whl (42 kB)
Building wheels for collected packages: backports.zoneinfo
  Building wheel for backports.zoneinfo (PEP 517) ... done
  Created wheel for backports.zoneinfo: filename=backports.zoneinfo-0.2.1-cp38-cp38-macosx_11_0_arm64.whl size=35856 sha256=8f2eecbe85f950a4e0c51cf577c9a208ecb52f71e683a0773b2d85ce3328d08b
  Stored in directory: /Users/yujeong/Library/Caches/pip/wheels/c7/de/cc/c405827ed64f81b56142f1e0075a970b2731b00d21983d54fb
Successfully built backports.zoneinfo
Installing collected packages: sqlparse, backports.zoneinfo, asgiref, Django
Successfully installed Django-4.0.5 asgiref-3.5.2 backports.zoneinfo-0.2.1 sqlparse-0.4.2

 

내가 만든 가상 환경에 django까지 설치했다면 정상적으로 설치되었다고 뜨지만 혹시 모르니 다시 명령어로 확인해보자.

 

장고 버전 확인 명령어 

(django 튜토리얼에서는 python으로 표기되어있지만 필자는 python3으로 입력해야 명령어가 실행됐다. )

$ python -m django --version

실제 실행 과정 ) 

(django_tutorial) yujeong@xo-MacBook-Air ~ % python3 -m django --version
4.0.5

 

 

장고 프로젝트 생성

cd 명령어로 프로젝트를 생성할 디렉터리로 이동하여 프로젝트를 생성한다.

 

% django-admin startproject mysite

실제 실행 과정 )

(django_tutorial) yujeong@xo-MacBook-Air ~ % cd Project                    
(django_tutorial) yujeong@xo-MacBook-Air Project % cd test
(django_tutorial) yujeong@xo-MacBook-Air test % django-admin startproject mysite

튜토리얼에 나와있는 대로 mysite라는 프로젝트를 생성했다면 mysite 디렉토리가 생성되고 내부에 많은 파일들이 있는 것을 확인할 수 있는데, 이 파일마다 수행하는 기능이 다르다. 파일마다 수행하는 기능이 다르므로 자세한 부분은 공식 홈페이지에서 확인 해보자! 

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

 

프로젝트 서버 실행

mysite 프로젝트가 정상적으로 작동하는지 명령어로 확인해 볼 수 있으며, 잘 작동되었다면 http:// 주소로 직접 들어가 확인해 볼 수 있다. (아래 이미지 참고)

이 명령어에서 manage.py를 넣기 때문에 꼭 manage.py가 있는 디렉토리 내에서 명령어를 실행해야 된다.

% python3 manage.py runserver

실제 실행 과정 )

(django_tutorial) yujeong@xo-MacBook-Air mysite % python3 manage.py runserver
Watching for file changes with StatReloader
Performing system checks...

System check identified no issues (0 silenced).

You have 18 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.
June 28, 2022 - 08:32:33
Django version 4.0.5, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

 

Starting development server at http://127.0.0.1:8000/ 에 나와있는 주소로 들어가서 아래 화면이 보인다면 정상적으로 작동하는 것이다.

 

 

설문조사 앱 만들기

위에서 만든 mysite 프로젝트에 polls 라는 설문조사 어플리케이션을 추가해보자.

$ python3 manage.py startapp polls

실제 실행 과정 )

(django_tutorial) yujeong@xo-MacBook-Air mysite % python3 manage.py startapp polls

위 명령어를 입력하면 mysite 프로젝트 디렉토리 내부에 polls 디렉터리가 생성된 것을 볼 수 있는데,

polls 파일을 열면 mysite 내부와 비슷한 것을 볼 수 있다.

 

 

 

 

 

 

 

 

첫 번째 뷰 작성하기

이제 튜토리얼에 나와있는 첫 번째 뷰를 만들어보자. (내부 파일은 작성은 터미널이 아닌 vscode에서 작성하여 실제 실행 과정은 생략했다.)

먼저 polls/view.py 파일을 열어 다음과 같은 파이썬 코드를 입력한다.

from django.http import HttpResponse

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

다음은 polls 디렉토리 내부에 urls.py 파일을 만들어 코드를 입력한다.

from django.urls import path

from . import views

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

 

최상위 폴더인 mysite 디렉터리에서 manage.py 파일에 include() 함수를 사용하여 일부 코드를 추가한다. 

include() 함수는 다른 URLconf들을 참조할 수 있도록 도와줍니다. Django가 함수 include()를 만나게 되면, URL의 그 시점까지 일치하는 부분을 잘라내고, 남은 문자열 부분을 후속 처리를 위해 include 된 URLconf로 전달한다고 한다.

from django.contrib import admin
from django.urls import include, path # 새로 import 추가

urlpatterns = [
    path('polls/', include('polls.urls')), # 새로 추가한 코드 
    path('admin/', admin.site.urls),
]

코드를 추가하고 기존 http://127.0.0.1:8000/경로로 접속하게 되면 오류가 나고 polls를 붙여서 입력하면 polls/view.py에 정의했던 index함수 내부의 return 값인 HttpResponse("Hello, world. You're at the polls index.")가 화면에 나타난다.


내용 전문 및 출처 -djangoproject

'study > Django' 카테고리의 다른 글

Django - MtoM Field 없이 구현  (0) 2022.07.06
westarbucks 만들기 - models.py  (0) 2022.07.05
Django tutorial 따라하기 4  (0) 2022.06.30
Django tutorial 따라하기 3  (0) 2022.06.29
Django tutorial 따라하기 2  (0) 2022.06.29
댓글