Django project
를 구성하는 코드를 자동 생성 할 수 있다.Django
인스턴스를 구성하는 설정들을 자동 생성 하는것이다.database
설정 Django
위한 옵션들Application
을 위한 설정들cd
명령으로 코드를 저장할 디렉토리로 이동 한 후,위의 명령어 입력django-admin startproject mysite
startproject
에서 뭐가 생성되었는지 확인해볼까 ?mysite
가 있는 디렉토리를 맞춘 후 tree .
입력~/Desktop/wecode_project master*
base ❯ tree .
.
└── mysite
├── manage.py
└── mysite
├── __init__.py
├── asgi.py
├── settings.py
├── urls.py
└── wsgi.py
2 directories, 6 files
내포되어있는 파일은,
manage.py
:Django
프로젝트와 다양한 방법으로 상호작용 하는 커맨드라인의 유틸리티mysite/
디렉토리 내부에는Project
를 위한 실제Python Package
이 저장
- 이 디렉토리의 이름을 가지고
Project
의 어디서나Python Package
들을import
가능
ex) mysite.urlsmysite/__init__.py
:Python
으로 하여금 이 디렉토리를 패키지처럼 다루라고 알려주는 용도의 단순한 빈 파일mysite/settings.py
: 현재Django project
의 환경 및 구성을 저장mysite/urls.py
: (=URL dispatcher
) 현재Project
의 URL 선언을 저장,Django
로 작성된 사이트의 《목차》 라고 할 수 있습니다.mysite/asgi.py
:Project
를 서비스하기 위한 ASGI 호환 웹 서버의 진입점mysite/wsgi.py
:Project
를 서비스하기 위한 WSGI 호환 웹 서버의 진입점.
python manage.py runserver
Performing system checks...
System check identified no issues (0 silenced).
You have unapplied migrations; your app may not work properly until they are applied.
Run 'python manage.py migrate' to apply them.
4월 06, 2021 - 15:50:53
Django version 3.1, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
작업을 시작하기 위한 환경(프로젝트)이 세팅 다 되었슴당 ^>^
manage.py
가 존재하는 디렉토리에서 명령을 입력하세여 ! python manage.py startapp polls
polls/
__init__.py
admin.py
apps.py
migrations/
__init__.py
models.py
tests.py
views.py
view
작성하기polls/views.py
를 열어 파이썬 코드를 입력해라
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
polls/view.py
를 불러올 polls/urls.py
를 작성작성한 view
파일을 호출 하기위해 이 view
파일과 연결된 url
파일이 필요하다.**
polls
디렉토리 내의 urls.py
에 코드 작성해서 연결해야한다따로 polls
디렉토리에urls.py
파일이 없었기 때문에 touch urls.py
로 만들어 주고,
polls/urls.py
파일에 아래와 같은 코드를 작성한다.
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
```
### 3. 작성한 `polls/urls.py`를 작성 `mysite/urls.py`와 연결
그리고 나서, 최상위 URLconf
인 mysite/urls.py
에 polls App
의 URLconf
인 urlsp.py
을 연결해야한다.
django.urls.include
를 import
하고, urlpatterns
리스트에 include() 함수
를 추가합니다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() 함수
는 다른URLconf
들을 참조할 수 있도록 도와줍니다.
mysite
의 urls.py
파일 path('polls/', include('polls.urls'))
를 사용하여 polls
앱 url
을 참조 하도록 했다 ! path('polls/',
: polls
라는 해당 path
를 잡아내고,include('polls.urls'))
: include
함수로 polls
디렉토리의 url.py
파일을 잡아 준거다 !polls
의 urls.py
파일path('', views.index, name='index')
를 사용gksek.path(' '),
: 따로 path
없고 현재 디렉토리인 polls
내부에서 찾아보자view.index
: polls
내부의 view.index
라는 view
파일 내부의 ìndex
로 연결시켜준다.polls
의 views.py
파일views
의 index 함수
def index(request):
return HttpResponse("Hello, world. You're at the polls index.")
"Hello, world. You're at the polls index."
를 호출해 준다.Client
는 이 메세지를 보게 될것이다 ! ! !!
polls 앱(app)
에 그 자체의URLconf(polls/urls.py)
가 존재하는 한,/polls/
, 또는/fun_polls/
,/content/polls/
와 같은 경로, 또는 그 어떤 다른 root 경로에 연결하더라도, 앱은 여전히 잘 동작할 것입니다.
path()
함수
path()
함수에는 4가지의 인수가 전달 되었다.
route
: 필수 인수view
: 필수 인수kwargs
: 선택 가능한 인수name
: 선택 가능한 인수필수 인수
route
***my_site/urls.py from django.contrib import admin from django.urls import include, path ` urlpatterns = [ path('polls/', include('polls.urls')), # 'polls/' 이부분이 "route" path('admin/', admin.site.urls), ]
route
는 URL patterns을 가진 문자열 입니다.
- 요청이 처리될 때, Django 는 urlpatterns 의 첫 번째 패턴부터 시작하여, 일치하는 패턴을 찾을 때 까지 요청된 URL 을 각 패턴과 리스트의 순서대로 비교
- 패턴들은 GET 이나 POST 의 매개 변수들, 혹은 도메인 이름을 검색하지 않습니다.
- 예를 들어,
https://www.example.com/myapp/
이 요청된 경우, URLconf 는 오직myapp/
부분만 바라 봅니다.https://www.example.com/myapp/?page=3
이 요청된 경우, URLconf 는 오직myapp/
부분만 신경씁니다.필수 인수
view
***polls/urls.py from django.urls import path from . import views ` urlpatterns = [ path('', views.index, name='index'), # views.index 이부분이 view ]
view
는 Django 에서 일치하는 패턴을 찾으면, HttpRequest 객체를 첫번째 인수로 하고, 경로로 부터 〈캡처된〉 값을 키워드 인수로하여 특정한view
함수를 호출합니다.선택 가능한 인수
kargs
- 임의의 키워드 인수들은 목표한 view 에 사전형으로 전달됩니다. 그러나 이 튜토리얼에서는 사용하지 않을겁니다.
선택 가능한 인수
name
***polls/urls.py from django.urls import path from . import views ` urlpatterns = [ path('', views.index, name='index'), # name='index' 이부분이 name ]
- URL 에 이름을 지으면, 템플릿을 포함한 Django 어디에서나 명확하게 참조할 수 있습니다.
- 이 강력한 기능을 이용하여, 단 하나의 파일만 수정해도 project 내의 모든 URL 패턴을 바꿀 수 있도록 도와줍니다.