Django - 첫 번째 앱 작성하기 part.1

solee·2022년 2월 10일
0

Django

목록 보기
2/12

https://docs.djangoproject.com/ko/4.0/intro/tutorial01/

진행해 보자.


django가 튜토리얼로 제공하는 앱 만들기는 간단한 관리 사이트와 투표 폴이다. 두번째로 해 보니 처음 하는 것보다 훨씬 나아 바로 포스팅을 시작했다.

docs가 아무래도 설명이 좀 어려워서, 2번째 시도를 해 보며 기억할만한 것을 내 나름 꼽아 설명해 보려고 한다. 목표는 나중에(머릿속에서 이 내용들이 지워졌을 때) 내 글을 보고 다 진행할 수 있도록 포스팅하는 것이다.

환경은 윈도우와 우분투를 사용하고, 파이썬 버전은 3.9.5다.




가상환경과 프로젝트 생성

먼저 conda 명령어를 사용해 가상환경을 생성한다.

conda creat -n cocacola python=3.9
conda activate cocacola

cocacola라는 이름의 가상환경을 만든다. 문제가 없으면 y/N을 입력해 마저 진행한다. 그 후에 생성한 cocacola를 activate한다.

그러면 오른쪽 파란 글씨를 확인하자. 미니콘다의 기본 환경은 base인데, 새로운 가상환경을 생성해 활성화시켰으므로 환경이 cocacola로 바뀐 것을 확인할 수 있다.

그 후에 이미지처럼 가상환경 내부에 pip install 명령어를 이용해 django를 설치한다. 여기까지 하면 일단 django의 docs를 따라할 기본 환경을 세팅한 것이다.



django-admin startproject cocacola

이 명령을 통해 cocacola라는 프로젝트를 django가 생성하는데, 그러면서 cocacola라는 디렉토리도 생성한다. 디렉토리 내부는 다음과 같다.

나는 cocacola로 생성했으니 mysite 대신 cocacola라는 디렉토리가 생성되어 있다.

아직은 친숙한 윈도우의 폴더 스샷이다. cocacola 안에 cocacola가 있고, /cocacola/cocacola/에는 파이썬 파일들이 5개 있다. __init__.py가 눈에 띈다. 패키지와 모듈에 관한 글에서 다뤘듯 이 파일은 파이썬으로 하여금 파일이 든 디렉토리를 패키지로 인식하게 한다.

그리고 settings.py는 설정을 저장해 주는 파일이겠고.

urls.py는 링크에 대한 설정인데, docs가 설명하기로는 cocacola 사이트의 "목차"라고 한다. 내가 표현하자면 "이정표"에 가까운 것 같다. url의 패턴을 저장해 만약 /가방/32/blue라는 주소가 오면 미리 설정해 둔 주소의 조건에 따라 페이지를 이동시키는... 스프링 프로젝트 때 했던 느낌? 하지만 docs가 첨부해 둔 URL dispather에 따르면 그것보다는 /가방/<int:id>/처럼 설정한다.



프로젝트 실행

그 다음은 서버를 실행하는 거다.

python manage.py runserver 8080

실행하면 unapplied migration에 대해 경고문이 뜨는데 무시해도 좋다.

이것도 앞서 django앱을 만들며 만났던 오류를 서술한 글에서 말했듯, 윈도우가 기존의 8000포트넘버를 연결하지 못해 8080으로 호스팅해주며, 접속할 때에도 8080으로 접속해야 한다. 잘 생성했다면 로켓이 나타난다.

나를 축하해주는 로켓(고무적이다)




서버를 끄고 manage.py가 있는 폴더(아까 manage.py가 있는 디렉토리에서 runserver를 실행했으므로 같은 위치에서) startapp 명령어를 실행한다. 그러면 디렉토리 내에 polls라는 하위 디렉토리가 생성된다.

python manage.py startapp polls

그 안에는 이런 것들이 있다. __init__.py가 보이고, 그 외에는 admin이나 views, models처럼 대충 어떤 역할을 하는지 상상이 가는 파일들이 있다.

짧게 설명하자면, Django는 MTV패턴을 가지고 있는데, M모델 = 데이터, T템플릿 = 사용자에게 보여지는 화면, V뷰 = 모델에서 받은 데이터를 가공해 템플릿에 전달하는 식으로 나뉘어져 있다. MVC패턴을 써 봤기 때문에 그냥 컨트롤러가 템플릿이 되었구나 정도로 이해했다(MVC기반이라 맞기도 할 것이다).



뷰 작성

그럼 첫번째 를 작성한다. django에서 뷰는 모델에 필요한 정보를 받아와서 템플릿에 전달한다. 튜토리얼이므로 여기서는 아주 간단한 형태의 샘플이 제공된다. polls/views.py에 추가한다.

from django.http import HttpResponse


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

뷰를 호출하면 정해진 정보를 제공하는데, 그 호출이란 URL을 통해 클라이언트가 보내는 것이다. 그 URLconf를 위해 파일을 생성한다. polls 디렉토리에 생성해야 한다! cocacola/cocacola/ 디렉토리에도 같은 파일이 있다.

URLpattern을 설정하는 방법 세 가지를 보여준다. admin이라는 주소를 호출하면 반응하겠군.


그럼 다시 cocacola/urls.py를 벗어나, polls/urls.py를 생성한 후에 아래의 코드를 붙여넣는다.

from django.urls import path

from . import views

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

index라는 뷰로 연결한다.
아까 작성한 뷰에 쓰여 있던 멘트를 다시 보자.

"Hello, world. You're at the polls index."

그게 여기다.


다음으로는 cocacola/cocacola/urls.py에 polls에 관한 urlpattern을 추가해 연결될 수 있게 한다.

url의 import가 하나 추가되었고, polls/urls를 include한다. admin.site.urls를 제외한 path들은 항상 include()를 사용해야 한다.


이렇게 index 뷰를 연결했으므로 다시 서버를 열어 보면...

python manage.py runserver 8080

(에러는 무시한다! vscode의 터미널이 너무 작아서 다시 돌아왔다..)

서버가 무사히 실행되면, 안내받은 polls 페이지로 접속해 본다(잊지 말자! 8080!)

아까 입력한 polls index에 있다는 환영 문구가 여기 있다!





이렇게 part.1에서는 프로젝트를 생성, 그 내부에 앱을 생성하고 index라는 뷰를 생성해 연결했다. 같은 이름의 파일이 여럿이므로 주의한다.
또 코드를 복사, 붙여넣기 할 때에 import가 추가로 된다거나 하는 부분이 있으니 다 날려버리고 새로 붙여넣기하지 않도록 주의한다.(괜히 이런 걸 상정하면서 경계하는 버릇이 있다)

그럼 part.2로. 뿅!

profile
DA DA DA

0개의 댓글