Django는 파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임 워크다. 쉽고 빠르게 웹 사이트를 개발할 수 있도록 돕는 구성요소로 이루어져 있다.
Django는 파이썬 웹 프레임워크 이므로 파이썬 설치가 필요하다.
brew install python@3.7
pip를 사용하여 장고를 설치한다. 사전에 pip 버전이 최신인지 확인이 필요하다.
python3 -m pip install --upgrade pip
python3 -m pip install Django
python이 Django를 찾을 수 있는지 확인
python3
import django
print(django.get_version())
pip로 설치하였으므로 pip로 제거하면 된다.
pip uninstall Django
🔗 첫 번째 장고 앱 작성하기, part 1 공식문서를 따라하며 작성된 글입니다.
django튜토리얼을 통해 간단한 설문조사 어플리케이션을 만들 수 있다.
python3 -m django --version
프로젝트를 생성할 폴더로 이동 후 다음의 명령을 수행한다. 이 명령은 Django 프로젝트를 구성하는 코드를 자동으로 생성해준다.
django-admin startproject mysite
생성된 프로젝트 파일의 구조를 살펴보면 다음과 같다.
목차
라고 할 수 있음생성한 django프로젝트가 제대로 동작하는지 확인하기 위해 mysite 디렉토리로 이동후 다음 명령을 실행한다.
python3 manage.py runserver
프로젝트가 정상적으로 작동한다면 http://127.0.0.1:8000/
에서 위의 화면을 볼 수 있다.
❗️ 기본적으로 runserver의 명령은 8000번 포트를 사용하지만 다음 명령을 통해 포트를 바꿔서 수행할 수 있다.
python3 manage.py runserver [사용할 포트번호]
django는 앱의 기본 디렉토리 구조를 자동으로 생성할 수 있는 도구를 제공한다.
❗️ 프로젝트와 앱의 차이
What’s the difference between a project and an app? An app is a Web application that does something – e.g., a Weblog system, a database of public records or a small poll app. A project is a collection of configuration and apps for a particular website. A project can contain multiple apps. An app can be in multiple projects.
django에서는 프로젝트와 앱의 차이를 위와같이 설명하고 있다.
번역하자면 App은 웹 로그 시스템, 공개기록 데이터 베이스 또는 소규모 여론조사 앱과 같은 작업을 수행하는 웹 애플리케이션이고 Project는 특정 웹사이트에 대한 구성 및 앱의 모음이다. Project에는 여러개의 App이 포함될 수 있으며 하나의 App이 여러 Project에 있을 수 있다.
Project는 큰 웹사이트, App은 웹 사이트를 구성하는 개별 기능(?) 이라고 이해하면 될 것 같다.
앱을 생성하기 위해 manage.py가 존재하는 디렉토리에서 다음의 명령을 입력한다.
python3 manage.py startapp polls
생성된 앱의 파일 구조는 다음과 같다.
polls/view.py를 열어 아래와 같이 작성한다.
뷰를 호출하려면 이와 연결된 URL이 필요한데, 이를 위해 URLconf가 사용된다.
polls 디렉토리에서 URLconf를 생성하려면 urls.py라는 파일을 생성해야 한다. 파일 생성 후 다음과 같이 입력한다.
즉, view에 맞는 각각 URL을 필요로 하고 그 url은 application directory/urls.py에 작성한다.
이 url모듈은 polls(App) 의 개인 모듈이고 이를 mysite(Project) 에서 참고 할 수 있도록 mysite/ursl.py 파일을 다음과 같이 수정해야 한다.
django.urls.include를 import하고 urlpatterns리스트에 include()
함수를 다음과 같이 작성한다.
include()
는 다른 URLconf를 참조할 수 있도록 도와준다. django가 include()
를 만나면 URL의 그 시점까지 일치하는 부분을 잘라내고 남은 문자열 부분을 URLconf로 전달한다.
include()
는 admin.site.urls를 제외한 다른 URL패턴을 포함할때 마다 항상 사용해야 한다
🔗 django.urls functions for use in URLconfs
위치에 포함되어야 하는 다른 URLconf모듈에 대한 전체 python경로를 가져오는 함수이다. 선택적으로 app_namespace 및 instance_namespace도 지정할 수 있다.
include(module, namespace=None)
include(pattern_list)
include((pattern_list, app_namespace), namespace=None)
path()
와(또는) re_path()
인스턴스index뷰가 URLconf에 잘 연결되었는지 확인하려면 다음 명령을 터미널에 입력한다.
python3 manage.py runserver
http://localhost:8000/polls/
로 이동하면 index뷰에 정의한 Hello, world. You're at the polls index.
를 확인할 수 있다.
🔗django.urls functions for use in URLconfs
urlpatterns에 포함할 요소를 반환한다.
path(route, view, kwargs=None, name=None)
참고
Django 훑어보기