django 튜토리얼의 내용을 따라하며 정리한 글입니다. 아래글은 오류가 있을수 있습니다. 더 정확하고 자세한 공홈을 확인하세요.
python manage.py startapp <앱 이름>
python manage.py startapp polls
위 명령어를 manage.py가 있는 디렉토리에서 실행한다. polls
다렉토리가 생성되었다.
DB 변경사항을 담는 파일을 모아둔 폴더, 언제든지 이전 DB 상태로로 돌아갈 수 있게 관리해준다.
모델을 관리하기 위해 등록, 관리자 페이지를 커스터마이징 한다..
앱 정보관리, 앱 진입시 로드할 기능등 관리
DB모델을 만들고 관리하는 파일
유닛테스트 할때 여기서 진행
views에서는 연산,로직을 한다. urls.py를 통해 요청이 들어오면 view에서는 구현된 로직을 통해 db에서 정보를 빼내 전달하는 일을 한다.
# polls/views.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
뷰를 호출하려면 이와 연결된 url가 필요하다. 이를위해 URLconf가 사용된다.
하위 앱의 polls/urls.py
를 생성한다.
(루트/프로젝트명/에 있는 urls.py가 아니다! 주의)
# polls/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
# path 에 빈 경로가 들어간것은 해당앱으로 들어온 요청일때를 말한다.
# 즉 여기는 polls 앱에 있기 때문에 :: 루트/polls 일때~
]
하위 앱의 urls.py
를 성정했다면 이제는 프로젝트 루트에 위치한 urls.py
를 수정해야 한다. 내용에 앱의 Path를 추가하도록 한다.
# /프로젝트명/urls.py
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('polls/', include('polls.urls')),
path('admin/', admin.site.urls),
]
from django.urls imnport path, include
불러오기path('polls/', include('polls.urls')),
를 추가장고에서 include() 함수는 다른 URLconf들을 참조할 수 있도록 도와줍니다. url에서 일치하는 부분 빼 나머지를 URLconf로 전달한다.
polls가 들어가는 path (e.g. /polls/, /fun_polls/, /content/polls/) 같은 경로에 연결해도 polls.urls로 연결된어 잘 작동된다.
route는 url 패턴을 갖는 문자열, 요청이 처리될때 django는 urlpatterns의 첫패턴부터 일치하는 패턴을 찾을때까지 리스트를 비교하게 된다. 요청이 왔을때 url이 https://www.example.com/myapp/
라면 도메인을 빼고 myapp/ 부분만 찾는다. https://www.example.com/myapp/?page=3
과 같이 쿼리가 들어와도 myapp/ 부분만
django에서 일치하는 패턴을 찾으면 HttpRequest객체를 첫번째 인수로 하고 경로로 부터 캡처된 값을 키워드 인수로 하여 특정 view함수를 호출한다.
임의의 키워드 인수들을 목표한 view에 사전형으로 전달된다..?
url에 이름을 지으면 템플릿을 포함안 django 어디서나 명확하게 참조할 수 있다. 하나의 파일만 수정하면 프로젝트 내의 모든 url패턴을 바꿀수 있도록 도와준다.
다른 URL패턴을 포함 할 때마다 항상 include()를 사용해야한다.