Django 001 | 공식 문서 따라하기 #1

This Is Empty.·2021년 9월 8일
0

Django

목록 보기
1/20

Django : 장고란?

Django는 파이썬으로 만들어진 무료 오픈소스 웹 애플리케이션 프레임 워크다. 쉽고 빠르게 웹 사이트를 개발할 수 있도록 돕는 구성요소로 이루어져 있다.

Django 설치

Django는 파이썬 웹 프레임워크 이므로 파이썬 설치가 필요하다.

brew install python@3.7

pip를 사용하여 장고를 설치한다. 사전에 pip 버전이 최신인지 확인이 필요하다.

python3 -m pip install --upgrade pip
python3 -m pip install Django


Django import

python이 Django를 찾을 수 있는지 확인

  • terminal 에서 python3 실행
python3
  • django import후 버전 확인
import django
print(django.get_version())

Django 제거

pip로 설치하였으므로 pip로 제거하면 된다.

pip uninstall Django

첫 번째 장고 앱 작성하기, part 1

🔗 첫 번째 장고 앱 작성하기, part 1 공식문서를 따라하며 작성된 글입니다.

django튜토리얼을 통해 간단한 설문조사 어플리케이션을 만들 수 있다.

  • django 버전확인
python3 -m django --version

프로젝트 만들기

프로젝트를 생성할 폴더로 이동 후 다음의 명령을 수행한다. 이 명령은 Django 프로젝트를 구성하는 코드를 자동으로 생성해준다.

django-admin startproject mysite

생성된 프로젝트 파일의 구조를 살펴보면 다음과 같다.

  • mysite/ : 프로젝트 root directory
  • manage.py : django프로젝트와 상호작용하는 커맨드 라인 유틸리티. 다른 설치 작업 없이 컴퓨터에서 웹서버를 시작할 수 있게 해준다.
  • mysite/mysite/ : 프로젝트를 위한 실제 python 패키지들이 저장되는 곳
  • mysite\\__init.py__ : 이 디렉토리를 패키지의 일부라고 알려주는 파일
  • mysite\settings.py : 현재 django 프로젝트의 환경 및 구성을 저장
  • mysite\urls.py : django 프로젝트 URL저장. 작성된 사이트의 목차라고 할 수 있음
  • mysite\asgi.py : 프로젝트를 지원하는 ASGI 호환 웹 서버를 위한 파일
  • mysite\wsgi.py : 웹 서버 게이트웨이 인터페이스 파일. 현재 프로젝트를 서비스하기 위한 웹 서버 진입점

개발 서버

생성한 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패턴을 포함할때 마다 항상 사용해야 한다


include()

🔗 django.urls functions for use in URLconfs

위치에 포함되어야 하는 다른 URLconf모듈에 대한 전체 python경로를 가져오는 함수이다. 선택적으로 app_namespaceinstance_namespace도 지정할 수 있다.

use

include(module, namespace=None)
include(pattern_list)
include((pattern_list, app_namespace), namespace=None)
  • module - URLconf 모듈(또는 모듈 이름)
  • namespace - 포함할 URL항목의 인스턴스 네임스페이스
  • pattern_list - 반복할 수 있는 path() 와(또는) re_path() 인스턴스
  • app_namespace - 포함할 URL항목의 어플리케이션 URL 네임스페이스

index뷰가 URLconf에 잘 연결되었는지 확인하려면 다음 명령을 터미널에 입력한다.

python3 manage.py runserver

http://localhost:8000/polls/로 이동하면 index뷰에 정의한 Hello, world. You're at the polls index.를 확인할 수 있다.


path()

🔗django.urls functions for use in URLconfs

urlpatterns에 포함할 요소를 반환한다.

use

path(route, view, kwargs=None, name=None)
  • route - URL 패턴을 가진 문자열. 요청이 처리될 때 django는 urlpatterns의 첫 번째 패턴부터 시작해 일치하는 패턴을 찾을 때 까지 요청된 URL을 각 패턴과 리스트의 순서대로 비교한다.
    - ❗️ 패턴들은 GET이나 POST의 매개변수들(혹은 도메인 이름)을 검색하지 않는다.)
  • view - django에서 일치하는 패턴을 찾으면 HttpRequest객체를 첫번째 인수로하고, 경로로 부터 캡쳐된 값을 키워드 인수로 하여 특정한 view함수를 호출한다.
  • kwargs - 임의의 키워드 인수들은 목표한 view에 dictionary형으로 전달된다.
  • name - URL에 이름을 지으면 템플릿을 포함한 django어디에서나 명확하게 참조할 수 있다. 하나의 파일만 수정해도 프로젝트 내의 모든 URL패턴을 바꿀 수 있다.

참고
Django 훑어보기

profile
Convinced myself, I seek not to convince.

0개의 댓글