[Django 시작하기] Part1. Django 기초
파일 구조 설명
상위 폴더의 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)