[Django] 첫 번째 장고 앱 작성하기, part1
링크 : https://docs.djangoproject.com/ko/4.1/intro/tutorial01/
📖 개요
이 글은 장고 공식 문서를 보고 실습한 내용을 다시 한번 기억하기 위해 쓰면서 정리한 내용입니다.
🎯 목표
튜토리얼을 통해 간단한 설문조사(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 패턴을 바꿀 수 있도록 도와줍니다.
'BackEnd > Django, DRF' 카테고리의 다른 글
[Django] 프로젝트 구조 설정, 만드는 순서 (0) | 2022.11.22 |
---|---|
[Django] static 파일 이미지 HTML에 추가하기 (0) | 2022.11.20 |
[Django] 첫 번째 장고 앱 작성하기, part4 (0) | 2022.11.17 |
[Django] 첫 번째 장고 앱 작성하기, part3 (0) | 2022.11.15 |
[Django] 첫 번째 장고 앱 작성하기, part2 (0) | 2022.11.14 |