WEB/Django

[Django] 개발 흐름

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를 구성하고 웹 브라우저에 보여주게 된다.

 

 

흐름도