Django의 개발 흐름
점프 투 장고로 장고를 공부하다 보니, 구동 방식이나, 흐름이 헷갈려 정리하고자 글을 쓰고자 한다.
맵핑 과정
위에 소개한 책 '점프 투 장고'에 나온 예시대로 설명을 해보겠다.
애플리케이션 중 'pybo'가 있다고 하자. pybo는 QnA 게시판이다. 맵핑 과정을 간략하게 정리해보자.
127.0.0.1:8000/pybo에 접속하는 경우
1. ./config/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('pybo/', include('pybo.urls')),
]
pybo/ 주소가 오게 되면, urls.py에서 pybo.urls 맵핑을 하게 된다.
2. ./pybo/urls.py
from django.urls import path
from . import views
app_name = 'pybo'
urlpatterns = [
path('', views.index, name='index'),
path('<int:question_id>/', views.detail, name='detail'),
path('answer/create/<int:question_id>/',
views.answer_create, name='answer_create'),
path('question/create/', views.question_create,
name='question_create'),
]
1번에서 pybo/를 받아 해당하는 부분을 맵핑하게 된다. 이때 pybo/ 에 해당하는 부분은 ''부분인 index이다. pybo에 있는 urls은 기본적으로 pybo/ 뒤에 해당하는 주소를 갖게 된다.
여하튼 맵핑이 돼, views.index를 실행하게 된다.
3. ./pybo/views.py
def index(request):
"""
pybo 메인 화면
최신순 질문 리스트 출력
"""
qeustion_list = Question.objects.order_by('-create_date')
context = {'question_list': qeustion_list}
return render(request, 'pybo/question_list.html', context)
index() 함수는 요청이 들어왔을 때, 기존에 있는 question 데이터를 가져다가 html를 구성하고 웹 브라우저에 보여주게 된다.