본문 바로가기

Python/Django

[Django] Django - (맛보기)Function 기반 View

이번에는 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 에 대해 조금 더 알아보면
  1. 첫번째 인자는 실제 url 입니다. 장고에서는 일치하는 문자열을 찾을때까지 urlpatterns 리스트를 스캔합니다. 이러한 경로를 동적으로 생성가능함.
  2. 두번째 인자는 view 입니다. 장고에서는 views.py 파일을 찾는다. 
  3. kwargs - 딕셔너리로 뷰에 전달, 많은 유연성을 가진다.
  4. 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 설정을 생략하면 초기페이지를 설정할 수 있다
]