Django 공부를 위해 구름ide라는 클라우드 기반의 개발환경으로 공식 문서를 통해 간단한 설문조사 앱을 만들어 보기로 했다.
개발환경은 리눅스 기반
Django를 통해 만들 어플케이션은 프로젝트의 형식으로 구성요소들이 설정된다.
django-admin startproject myiste
위의 명령어를 통해 mysite라는 프로젝트를 개설해줬다.
❗️ mysite 부분에 원하는 프로젝트 명을 입력해주면 되지만 Python 또는 Django에서 이미 사용 중인 이름은 피해야한다.
startproject를 통해 생성된 mysite라는 프로젝트는
mysite/
manage.py
mysite/
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
위의 구조로 생성된다.
mysite/
Django 프로젝트가 잘 동작하는 지 확인하기 위해서
python manage.py runserver 0.0.0.0:80
runserver까지만 입력하면 기본적으로 127.0.0.1:8000으로 열리지만 현재 사용중인 구름ide 개발환경에서는 해당 IP와 포트번호로 접속이 되지 않아 0.0.0.0의 IP와 80의 포트번호를 사용하였다.
이제 앱을 개발할 환경이 구성되었으니 mysite라는 프로젝트 안에 polls라는 설문조사 어플리케이션을 개발한다.
python manage.py startapp polls
위의 명령어를 통해 polls라는 투표 어플리케이션의 틀을 만들어 주었다. 위치는 /mysite 에 바로 개설해주어 manage.py와 같은 경로에 있다.
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
디렉토리 구조는 다음과 같다.
polls/views.py 를 통해 polls의 뷰를 작성해줄 수 있다.
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
HttpResponse를 통해 html 파일을 따로 사용하지 않고, 클라이언트에게 response를 줄 수 있다.
이렇게 작성된 index는 /polls/urls.py의 path()를 통해 클라이언트로부터 받아온 request를 넘겨받는다.
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
위의 path()는
path(route, view, kwargs=None, name=None)
에서 kwargs를 제외한 route, view, name을 인수로 받았다.
route는 ''로 홈페이지의 최상의 인덱스로 지정되었고
view는 iew.index 이전에 작성한 polls/view.py에서 index를 view로 지정한 것이고
name은 'index'로 지정해줬다
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
그 이후에 mysite/urls.py를 include() 통해 polls하위의 인덱스가 'polls.urls'의 URLconf를 참조할 수 있도록 도와준다.