backend django tutorial #2 설문조사 앱 만들기

eunji hwang·2020년 4월 6일
0

BACKEND-PYTHON-DJANGO

목록 보기
6/28

django 튜토리얼의 내용을 따라하며 정리한 글입니다. 아래글은 오류가 있을수 있습니다. 더 정확하고 자세한 공홈을 확인하세요.

App & Project

  • 앱 : 단순 기능, 소규모 웹 애플리케이션
  • 프로젝트 : 특정 웹사이트에 대한 구성, 앱의 모음

설문조사 App

앱 생성

python manage.py startapp <앱 이름>
python manage.py startapp polls

위 명령어를 manage.py가 있는 디렉토리에서 실행한다. polls 다렉토리가 생성되었다.

파일구조

1) migrations

DB 변경사항을 담는 파일을 모아둔 폴더, 언제든지 이전 DB 상태로로 돌아갈 수 있게 관리해준다.

2) admin.py

모델을 관리하기 위해 등록, 관리자 페이지를 커스터마이징 한다..

3) apps.py

앱 정보관리, 앱 진입시 로드할 기능등 관리

4) models.py

DB모델을 만들고 관리하는 파일

5) test.py

유닛테스트 할때 여기서 진행

6) views.py

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.")

URLconf

뷰를 호출하려면 이와 연결된 url가 필요하다. 이를위해 URLconf가 사용된다.

앱의 urls.py

하위 앱의 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를 성정했다면 이제는 프로젝트 루트에 위치한 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 불러오기
  • urlpatterns에 path('polls/', include('polls.urls')),를 추가

장고에서 include() 함수는 다른 URLconf들을 참조할 수 있도록 도와줍니다. url에서 일치하는 부분 빼 나머지를 URLconf로 전달한다.

polls가 들어가는 path (e.g. /polls/, /fun_polls/, /content/polls/) 같은 경로에 연결해도 polls.urls로 연결된어 잘 작동된다.

path()의 인자

(1) route

route는 url 패턴을 갖는 문자열, 요청이 처리될때 django는 urlpatterns의 첫패턴부터 일치하는 패턴을 찾을때까지 리스트를 비교하게 된다. 요청이 왔을때 url이 https://www.example.com/myapp/ 라면 도메인을 빼고 myapp/ 부분만 찾는다. https://www.example.com/myapp/?page=3 과 같이 쿼리가 들어와도 myapp/ 부분만

(2) view

django에서 일치하는 패턴을 찾으면 HttpRequest객체를 첫번째 인수로 하고 경로로 부터 캡처된 값을 키워드 인수로 하여 특정 view함수를 호출한다.

(3) kwargs

임의의 키워드 인수들을 목표한 view에 사전형으로 전달된다..?

(4) name

url에 이름을 지으면 템플릿을 포함안 django 어디서나 명확하게 참조할 수 있다. 하나의 파일만 수정하면 프로젝트 내의 모든 url패턴을 바꿀수 있도록 도와준다.

언제 include() 사용하나요?

다른 URL패턴을 포함 할 때마다 항상 include()를 사용해야한다.

유일한 예외 : admin.site.urls가 유일한 예외

profile
TIL 기록 블로그 :: 문제가 있는 글엔 댓글 부탁드려요!

0개의 댓글