Django Tutorial part1

백승찬·2020년 10월 27일
0

django

목록 보기
2/11

장고 튜토리얼 연습

장고 버전 체크
$ python -m django --version

프로젝트 만들기

$ django-admin startproject <프로젝트 이름>

startproject에서 무엇이 생겼는 지 보면

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
  • manage.py : Django 프로젝트와 다량한 방법으로 상호작용하는 커맨드라인 유틸리티

  • mysite/ 디렉토리 내부에는 프로젝트를 위한 python 패키지들이 저장, 이 디렉토리 내의 이름을 이용하여(ex mysite.urls 와 같은 식으로) 프로젝트의 어디서나 python 패키지들을 임포트할 수있다.

  • mysite/__init__.py : python으로 하여금 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일 입니다.

  • mysite/__init__.py : python으로 하여금 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일

  • mysite/settings.py : 현재 django 프로젝트의 환경 및 구성을 저장, 여기서 환경 설정이 어떻게 동작하는 지 확인 가능

  • mysite/urls.py : 현재 django project의 URL 선언을 저장, Django로 작성된 사이트의 목차

  • mysite/asgi.py : 비동기 서버 게이트웨이 인터페이스

  • mysite/wsgi.py : 현재 프로젝트를 서비스하기 위한 WSGI 호환 웹 서버의 진입점

개발 서버

$ python manage.py runserver

Performing system checks...

System check identified no issues (0 silenced).

You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.

10월 26, 2020 - 15:50:53
Django version 3.1, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Django의 개발 서버의 시작

  • 개발서버는 순수 python으로 작성된 경량 웹 서버
  • django에 포함되어 있어 설정 없이 바로 개발에 사용 가능

절대로 개발 서버를 운영 환경에서 사용하지 말 것 오직 개발 목적으로만 사용

설문 조사 앱 만들기

$ python manage.py startapp polls
(manage.py가 들어있는 디렉토리에서 실행)

polls 디렉토리가 생기고 아래로 펼쳐놓으면

polls/
    __init__.py
    admin.py	
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

투표 어플레케이션의 집이 만들어졌습니다.

첫 번째 뷰 작성하기

polls/views.py

from django.http import HttpResponse


def index(request):
    return HttpResponse("Hello, world. You're at the polls index.")

Django에서 간단한 형태의 뷰 입니다.

  • 뷰를 호출하려면 이와 연결된 URL이 있어야 하는데 이를 URLconf
  • polls 디렉토리에서 URLconf를 생성하려면 urls.py라는 파일을 생성
polls/urls.py

from django.urls import path

from . import views

urlpatterns = [
    path('', views.index, name='index'),
]
  • 최상위 URLconf 에서 polls.urls 모듈을 바라보게 설정
  • mysite/urls.py 파일을 열고 django.urls.include를 import하고, urlpatterns 리스트에 include()함수를 추가
mysite/urls.py

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

urlpatterns = [
    path('polls/', include('polls.urls')),
    path('admin/', admin.site.urls),
]
  • include() 함수는 다름 URLconf들을 참조 할 수 있도록 도와줌
  • Django가 함수 include()를 만나면 URL의 그 시점까지 일치하는 부분을 잘라내고, 남은 문자열부분을 후속 처리를 위해 include 된 URLconf로 전달

include() 덕분에 URL을 쉽게 연결할 수 있다.
polls앱에 그 자체의 URLconf (polls/urls.py)가 존재하는 한 "/polls/", 또는 "/fun_polls/"와 같은 경로 또는 그 어떤 다른 root경로에 연결하더라도 앱을 여전히 잘 동작

include()를 언제 사용하는지?
다른 URL 패턴을 포함할 때마다 항상 include()를 사용해야 함 admin.site.urls는 예외

이제 index 뷰가 URLconf에 연결된 상태

  • path() 함수에는 두개의 필수 인자인 route와 view, 2개의 선택 가능한 인수로 kwargs와 name까지 모두 4개의 인수로 전달
    • path() 인수 : route
      URL 패턴을 가진 문자열, 요청이 처리 될 때, django는 urlpatterns의 첫 번째 패턴부터 시작하여, 일치하는 패턴을 찾을 때까ㅏ지 요청된 URL을 각 패턴과 리스트의 순서대로 비교
    • path() 인수 : view
      Django 에서 일치하는 패턴을 찾으면 HttpRequest 객체를 첫번째 인수로 하고 경로로 부터 캡터된 값을 키워드 인수로 하여 특정한 view 함수를 호출
    • path() 인수 : kwargs
      임의의 키워드 인수들은 목표한 view에 사전형으로 전달
    • path() 인수 : name
      URL에 이름을 지으면, 템플릿을 포함한 Django 어디에서나 명확하게 참조 가능

0개의 댓글