여기서 View는 다른 MVC Framework에서 말하는 Controller와 비슷한 역할을 한다. 즉, 애플리케이션의 로직을 넣는 곳이다. 모델에서 필요한 정보를 받아와 template에 전달하는 역할을 한다.
app/view.py
from django.http import HttpResponse
def index(request):
return HttpResponse("Hello, world")
가장 간단한 형태의 view이다. View를 호출하기 위해서 URLconf를 이용해 연결한다.
URLconf를 생성하기 위해서 app에 urls.py
파일을 생성한다.
app
├── __init__.py
├── admin.py
├── apps.py
├── migrations
│ └── __init__.py
├── models.py
├── tests.py
├── urls.py
└── views.py
from django.urls import path
from . import views
urlpatterns = [
# ex: /polls/
path('', views.index, name='index'),
]
최상위 URLconf(프로젝트 생성시 생긴 urls.py
)에서 애플리케이션의 url을 바라보게 설정한다.
from django.contrib import admin
from django.urls import include,path
urlpatterns = [
path('app/', include('app.urls')),
path('admin/', admin.site.urls),
]
"""mysite URL Configuration
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/2.1/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
주석으로 urlpatterns에 대한 설명이 있다.
-
Include()
: 다른 URLconf를 참조할 수 있도록 한다.path('사용자지정경로', include(url Conf module))
다음과 같이 urlConf 모듈이 존재하면 앞의 path 설정에는 아무 경로에 연결하더라도 작동한다.
$ python manage.py runserver
서버를 실행시킨 후 http://localhost:8000/app/
연결한 경로에 들어가면 View에서 설정한 화면이 나오는 것을 확인할 수 있다.
path()
path(route, view,kwargs=None, name=None)
- route : URL 패턴을 가진 문자열이다. urlpatterns 의 첫번째 패턴부터 시작해, 일치하는 패턴을 찾을 때까지 요청된 url을 각 패턴을 순서대로 비교한다.
- view : 일치하는 패턴을 찾으면 HttpRequest 객체를 첫번째 인수로 하고, view 함수를 호출한다.
- name : URL에 이름을 지으면, 템플릿을 포함한 장고 어디에서든 명확하게 참조할 수 있다.