less than 1 minute read

파일 구조 설명

상위 폴더의 urls.py

가장 상위 urls.py 에서 각 앱 별로 urlpatterns를 저장해 놓음 path 매개변수 안에 두개의 인자가 들어감. 첫 번째는 앱의 전체 경로, 두번째는 include함수를 이용하여 다른 앱의 url 패턴을 포함시킴 admin은 유일한 예외임

from django.contrib import admin
from django.urls import include, path

urlpatterns = [
    path('polls/', include("polls.urls")),
    path('admin/', admin.site.urls),
]

polls/urls.py

특정 앱의 urls 패턴을 가지고 있는 파일임. 이 url 패턴을 통해 해당 앱의 뷰로 연결시킴

from django.urls import path

from . import views

# url에 걸리면 view를 보여줌
urlpatterns = [
    # ex: /polls/
    path("", views.index, name="index"),
    # ex: /polls/5/
    path("<int:question_id>/", views.detail, name="detail"),
    path("<int:question_id>/results/", views.results, name="results"),
    path("<int:question_id>/vote/", views.vote, name="vote"),
]
  • 일치하는 경로가 생기면 그에 해당하는 view를 호출
  • 파라미터 name: URL에 이름 짓기. 템플릿을 포함한 Django 어디에서나 명확하게 참조할 수 있음.

polls/views.py

from django.http import HttpResponse
from .models import Question

# view: 클라이언트에게서 request를 받고 HttpResponse 메소드로 반환을 해주는 구조
def index(request):
    # return HttpResponse("Hello, world!!!")
    latest_question_list = Question.objects.order_by("-pub_date")[:5]
    output = ", ".join([q.question_text for q in latest_question_list])
    return HttpResponse(output)

def detail(request, question_id):
    return HttpResponse("You're looking at question %s." %question_id)

참고 링크

Django Part1