이번에는 Function 기반 view에 대해서 알아보겠습니다.
- 먼저 프로젝트(my_site)를 만들고 장고앱(first_app)을 만들겠습니다.
(django) D:\workspace\Python\Django\DJANGO4\DJANGO_COURSE_V2>cd 06-Django-Views-Routing-URLs
(django) D:\workspace\Python\Django\DJANGO4\DJANGO_COURSE_V2\06-Django-Views-Routing-URLs>django-admin startproject my_site
(django) D:\workspace\Python\Django\DJANGO4\DJANGO_COURSE_V2\06-Django-Views-Routing-URLs>cd my_site
(django) D:\workspace\Python\Django\DJANGO4\DJANGO_COURSE_V2\06-Django-Views-Routing-URLs\my_site>dir
D 드라이브의 볼륨: OS_WORK
볼륨 일련 번호: 9C64-09D3
D:\workspace\Python\Django\DJANGO4\DJANGO_COURSE_V2\06-Django-Views-Routing-URLs\my_site 디렉터리
2022-10-18 오전 10:14 <DIR> .
2022-10-18 오전 10:14 <DIR> ..
2022-10-18 오전 10:14 685 manage.py
2022-10-18 오전 10:14 <DIR> my_site
1개 파일 685 바이트
3개 디렉터리 115,535,941,632 바이트 남음
(django) D:\workspace\Python\Django\DJANGO4\DJANGO_COURSE_V2\06-Django-Views-Routing-URLs\my_site>python manage.py startapp first_app
(django) D:\workspace\Python\Django\DJANGO4\DJANGO_COURSE_V2\06-Django-Views-Routing-URLs\my_site>dir
D 드라이브의 볼륨: OS_WORK
볼륨 일련 번호: 9C64-09D3
D:\workspace\Python\Django\DJANGO4\DJANGO_COURSE_V2\06-Django-Views-Routing-URLs\my_site 디렉터리
2022-10-18 오전 10:19 <DIR> .
2022-10-18 오전 10:14 <DIR> ..
2022-10-18 오전 10:19 <DIR> first_app
2022-10-18 오전 10:14 685 manage.py
2022-10-18 오전 10:19 <DIR> my_site
1개 파일 685 바이트
4개 디렉터리 115,535,929,344 바이트 남음
(django) D:\workspace\Python\Django\DJANGO4\DJANGO_COURSE_V2\06-Django-Views-Routing-URLs\my_site>
지난번에도 간단히 언급한것처럼 VIEWS 는 웹사이트의 특정 페이지라고 할 수 있습니다, 다만 정상동작을 하기위해서는 URL 설정(프로젝트 레벨 urls, 앱 레벨 urls)을 통해 라우팅해야만 합니다.
------------------------------- 프로젝트의 urls.py -------------------------------
# 직접호출하는 경우
from my_app import views
urlpatterns = [
# 직접호출하는 경우
# path('my_app/', views.index, ),
# 간접호출하는 경우, Including another URLconf
path('my_app/', include('my_app.urls')),
path('admin/', admin.site.urls),
]
------------------------------- 프로젝트의 urls.py -------------------------------
------------------------------- 장고앱의 urls.py -------------------------------
urlpatterns = [
path('', views.index, name='index')
]
------------------------------- 장고앱의 urls.py -------------------------------
- path 에 대해 조금 더 알아보면
- 첫번째 인자는 실제 url 입니다. 장고에서는 일치하는 문자열을 찾을때까지 urlpatterns 리스트를 스캔합니다. 이러한 경로를 동적으로 생성가능함.
- 두번째 인자는 view 입니다. 장고에서는 views.py 파일을 찾는다.
- kwargs - 딕셔너리로 뷰에 전달, 많은 유연성을 가진다.
- name - 장고의 다른곳에서 참조하기 위해 URL의 이름을 지정.
- 새로운 장고앱에 화면을 만들고, 프로젝트에 연결해 보겠습니다.
화면 추가 - 차후에 프로젝트가 심화되면 템플릿 방식으로 전달하는 방식과 JINJA 를 이용한 방식에 대해 알아보겠습니다.
- /first_app/views.py
from django.shortcuts import render
from django.http.response import HttpResponse
# Create your views here.
def simple_view(request):
return HttpResponse('SAMPLE VIEWS ~~~~') # template HTML > JINJA
- /first_app/urls.py - 첫번째 인자에 따라 url 주소가 추가됨.
from django.urls import path
from . import views
urlpatterns = [
# 실제 url은 프로젝트 urls.py 에서 설정하므로 여기선 생략,
# 생략한 부분을 추가하면, 프로젝트 path('first_app/') + 앱url path('simple_view') 로 구성된다.
# domain.com/first_app/simple_view 로 구성됨,
# view 인자는 실제 연결할 views의 함수 이름을 추가함,
path('', views.simple_view,)
]
- ./urls.py - 프로젝트 urls 파일 수정
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('admin/', admin.site.urls),
path('first_app/', include('first_app.urls')),
]
- 실제 서버 화면
- /first_app/urls.py - 첫번째 인자를 추가한 경우.
from django.urls import path
from . import views
urlpatterns = [
# 생략한 부분을 추가하면, domain.com/first_app/simple_view 로 구성됨,
path('simple_view', views.simple_view,)
]
- ./urls.py - 초기 페이지 추가하는 방법(urls.py 에 추가한 맛보기 버전)
초기 페이지를 설정 - path 를 설정해 보자(3번째 path 부분.)
from django.contrib import admin
from django.http import HttpResponse
from django.urls import include, path
def home_view(request):
return HttpResponse("HOME PAGE~111~")
urlpatterns = [
path('admin/', admin.site.urls),
path('first_app/', include('first_app.urls')),
path('', home_view), # 여기에 url 설정을 생략하면 초기페이지를 설정할 수 있다
]
'Python > Django' 카테고리의 다른 글
[Django] Django - (맛보기)404 예외처리 (0) | 2022.10.19 |
---|---|
[Django] Django - (맛보기)동적인 View (0) | 2022.10.19 |
[Django] Django - (맛보기 url 연결)프로젝트 생성 및 장고앱 추가 (0) | 2022.10.17 |
[Django] Bootstrap 기초 (0) | 2022.10.06 |
[Django] CSS 기초 (0) | 2022.10.05 |