django | February 13, 2020
1. ubuntu에서 terminal 열기: Ctrl + Alt + T
전체화면으로 키우기: Window키 + 위쪽화살표
2. django 설치
$ pip install django
3. django 설치 여부 및 version 확인
*제대로 설치가 되어 있지 않다면, No module named django
와 같은 error 발생
$ python -m django --version
$ django-admin startproject mysite
startproject를 하면 다음과 같은 파일 및 디렉토리가 생성된다.
mysite/ #이건 이름 바꿔도 됨. 이 directory는 껍데기일뿐
manage.py
mysite/ #진짜 project 이름과 설정 등등은 다 여기 directory가 한다.
__init__.py
settings.py
urls.py
asgi.py
wsgi.py
기본적으로 runserver 명령은 내부 IP의 8000번 포트로 개발 서버를 띄운다.
$ python manage.py runserver
이런 문구가 뜨면, http://127.0.0.1:8000/ 에 접속하여 로켓을 확인한다.
manage.py가 존재하는 디렉토리인 mysite에서 polls app을 만든다.
$ python manage.py startapp polls
생성된 polls 디렉토리의 구조는 다음과 같다.
#현재 프로젝트 폴더
firstproject/ #하위 폴더 중 같은 이름의 폴더가 자동으로 생성되므로(mysite), 이름 바꿔도 됨
manage.py
polls/ #startapp으로 생성
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py #결과를 실행할 함수들이 들어있음. request는 ip
**urls.py** #새로 생성한 파일. path가 view의 함수를 실행하도록 만듦.
mysite/ #startproject으로 생성
__init__.py
settings.py
urls.py #최상위 URLconf에서 polls.urls 모듈을 바라보게 설정
asgi.py
wsgi.py
*django는 URLconf(URL configuration)을 사용하는데, URLconf는 django에서 URL과 일치하는 뷰를 찾기 위한 패턴들의 집합이다.
route
: URL 패턴을 가진 문자열
view
: django에서 일치하는 패턴을 찾으면, 경로로부터 캡처된 값을 키워드 인수로 하여 특정한 view 함수를 호출한다.
kwargs
: 임의의 키워드 인수들은 목표한 view에 사전형으로 전달된다.
name
: URL에 이름을 부여
admin/
이 있으면 admin.site.urls
가 실행되고, polls/
가 있으면 include('polls.urls')
가 실행된다.path('polls/', include('polls.urls'))
코드는 path/
까지 mysite/urls.py
파일에서 해석하고, include('polls.ulrs')
함수를 통해서 그 다음 url 부분을 polls
디렉토리 아래의 urls.py
모듈에서 해석할 수 있게 된다.admin.site.urls
가 유일한 예외다.#mysite/urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('polls/', include('polls.urls')),
#각각의 app.urls.py에서 입력한 url path를 참조할 수 있게 한다.
#그리고 각 app.urls.py에서는 또다시 app.views.py에 입력된 함수값을 실행하게 한다.
path('admin/', admin.site.urls)
#기본 default값
]
현재 django 인스턴스에서 활성화된 모든 django 어플리케이션들의 이름이 담겨 있다. 앱들은 다수의프로젝트에서 사용될 수 있고, 다른 프로젝트에서 쉽게 사용될 수 있도록 패키징하여 배포할 수 있다.
django.contrib.admin; 관리용 사이트
django.contrib.auth; 인증 시스템
django.contrib.contenttypes; 컨텐츠 타입을 위한 프레임워크
django.contrib.sessions; 세션 프레임워크
django.contrib.messages; 메세징 프레임워크
django.contrib.staticfiles; 정적 파일을 관리하는 프레임워크
#firstproject; 가장 상위의 directory에서 입력
$ python manage.py migrate
Reference:
- https://docs.djangoproject.com/ko/3.0/intro/tutorial01/
- https://suwoni-codelab.com/django/2018/03/24/Django-Url-function/