Django/DRF

[Django] 첫 번째 장고 앱 작성하기, part1

Jong_seoung 2022. 11. 14. 12:16
반응형

[Django] 첫 번째 장고 앱 작성하기, part1

링크 : https://docs.djangoproject.com/ko/4.1/intro/tutorial01/

 

첫 번째 장고 앱 작성하기, part 1 | Django 문서 | Django

Django The web framework for perfectionists with deadlines. Toggle theme (current theme: auto) Toggle theme (current theme: light) Toggle theme (current theme: dark) Toggle Light / Dark / Auto color theme Overview Download Documentation News Community Code

docs.djangoproject.com


📖  개요

이 글은 장고 공식 문서를 보고 실습한 내용을 다시 한번 기억하기 위해 쓰면서 정리한 내용입니다. 

 

🎯 목표

튜토리얼을 통해 간단한 설문조사(polls) 애플리케이션을 만드는 과정이다.

두 가지 파트로 구분되어 있다.

  • 사람들이 설문 내용을 보고 직접 투표할 수 있는 개방된 사이트
  • 관리자가 설문을 추가, 변경, 삭제할 수 있는 관리용 사이트

💡 Django의 버전 확인

py -m django --version

Django가 제대로 설치되었다면 버전을 확인하고 제대로 설치되지 않았다면, "No module named django"와 같은 에러가 발생한다.

이 글은 Django 4.1을 위해 작성된 것으로 python 3.8혹은 이후 버전을 지원한다.

 

💡 프로젝트 만들기

커맨드 라인에서 cd명령으로 코드를 저장할 디렉토리로 이동한 후, 아래 명령어를 수행한다.

django-admin startproject mysite

그럼 현재 디렉토리에 mysite라는 디렉터리를 생성할 것이다.

 

❗ 주의사항

더보기
  • 프로젝트를 생성할때, Python 또는 Django에서 사용중인 이름은 피햐아한다. 특히 Python이나 django와 test와 같은 이름은 피해야한다. (test는 Python 패키지의 이름중 하나)
  • 작성한 코드를 /home/mycode와 같은 DocumentRoot의 바깥에두는 것이 보안상 좋다.

 

💡 startproject 에서 만들어지는 파일들

더보기
  • file:mysite/ 
    • 디렉토리 밖은 프로젝트를 담는 공간입니다. 그 이름은 Django와 아무 상관이 없으니, 원하는 이름으로 변경해도 됩니다.
  • manage.py 
    • Django 프로젝트오 다양한 방법으로 상호작용 하는 커맨드 라인의 유틸리티입니다. 
    • 자세한 정보
  • mysite/
    • 디렉토리 내부에는 프로젝트를 위한 실제 Python 패키지들이 저장됩니다. 이 디렉토리 내의 이름을 이용하여 프로젝트의 어디에서나 Python패키지들을 임포트 할수 있습니다. (예 : mysite.urls)
  • mysite/__init__.py 
    • Python으로 하여금 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일입니다.
    • 자세한 정보 
  • mysite/settings.py
    • 현재 django 프로젝트의 환경 및 구성을 저장합니다.
    • 자세한 정보
  • mysite/urls.py
    • 현재 Django project의 URL의 선언을 저장합니다. Django로 작성된 사이트의 "목차"라고 할 수 있습니다.
    • 동작 확인
  • mysite/asgi.py
    • 현재 프로젝트를 서비스하기 위한 ASGI-호환 웹 서버의 진입점입니다.
    • 배포하는 방법
  • mysite/wsgi.py
    • 현재 프로젝트를 서비스 하기 위한 WSGI호환 웹 서버의 진입점입니다.
    • 배포하는 방법

 

💡 개발 서버

Django 프로젝트가 제대로 동작하는지 확인해보자. mysite디렉터리로 이동하고, 아래 명령어를 입력하세요.

py manage.py runserver

이제 서버가 실행중이니 웹 브라우저의 http://127.0.0.1:8000/ 를 통해서 접속할 수 있습니다.

 

💡 설문조사 앱 만들기

작업을 시작하기 위해 환경이 만들어졌으니 앱을 생성해봅시다.

앱 생성을 위해 manage.py가 존재하는 디렉터리에서 다음의 명령을 입력해 봅시다.

py manage.py startapp polls

 

💡 첫 번째 뷰 작성하기

polls/view.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='idex'),
]

다음 단계에서 최상위 URLconf에서 polls.urls의 모듈을 바라보게 설정해야 한다. 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()와 path()

include( ) 함수는 다른 URlconf들을 참조할 수 있도록 도와줍니다. django가 함수 include( )를 만나게 되면, URL의 그 시점까지 일치하는 부분을 잘라내고, 남은 문자열 부분을 후속 처리를 위해 include 된 URLconf로 전달합니다.

include( ) 덕분에 그 어떤 다른 root 경로에 연결하더라도 URLconf가 존재한다면 앱은 잘 작동될 것입니다.

 

path( ) 함수에는 필수 인수인 route와 view, 2개의 선택 가능한 인수로 kwargs와 name까지 모두 4개의 인수가 있습니다.

  • route
    • URL 패턴을 가진 문자열입니다. 요청이 처리될 때, Django는 urlpatterns의 첫 번째 패턴부터 시작하여 일치하는 패턴을 찾을 때까지 요청된 URL을 각 패턴과 리스트의 순서대로 비교합니다.
  • view
    • Django에서 일치하는 패턴을 찾으면 HttpRequest 객체를 첫 번째 인수로 하고, 경로로 부터 '캡처된' 값을 키워드 인수로 하여 특정한 view 함수를 호출합니다.
  • kwargs
    • 임의의 키워드 인수들은 목표한 view에 사전형으로 전달됩니다. 
  • name
    • URL에 이름을 지으면, 탬플릿을 포함한 Django 어디에서나 명확하게 참조할 수 있습니다. 이 강력한 기능을 이용하여, 단 하나의 파일만 수정해도 project내의 모든 URL 패턴을 바꿀 수 있도록 도와줍니다.
반응형