Language/Python&Django

[장고] 함수형 뷰 기초

지과쌤 2021. 10. 29.
반응형

View

기능을 담당 ( 페이지 단위 )

화면이 나타나는 뷰, 화면이 없는 뷰

화면이 있건 없건 주소 URL은 있어야 한다.

 

뷰 내용( 함수, 클래스 ), URL이 있으면 동작한다.


뷰의 코드 형식

함수형

- request를 매개변수로 받고( 추가 매개변수 가능 ), 모양은 함수.

- 내가 원하는대로 동작들을 설계하고 만들고 싶을 때 사용.

클래스형

- CRUD

- 기존에 많이 사용하는 기능을 미리 클래스로 만들어두고 상속받아서 사용한다.

- 장고의 제네릭 뷰를 많이 사용


기본 구조

django 기본 config


실습

1. 따로 url 설정을 안한 페이지

 

views.py

from django.http import HttpResponse

def index(request):
    # 어떤 계산이나, 데이터베이스 조회, 수정, 등록
    # 응답 메시지를 만들어서 반환.
    # html 변수를 대신해서 템플릿 사용 가능
    html = "<html><body>Hi django</body></html>"
    return HttpResponse(html)

 

urls.py

from django.contrib import admin
from django.urls import path
from .views import index

urlpatterns = [
    path('admin/', admin.site.urls),
    path("", index),
    # path(주소, 뷰, 주소의 별명)
]

 

결과

간-단


2. url 설정 한 페이지

 

views.py

from django.http import HttpResponse

def index(request):
    # 어떤 계산이나, 데이터베이스 조회, 수정, 등록
    # 응답 메시지를 만들어서 반환.
    # html 변수를 대신해서 템플릿 사용 가능
    html = "<html><body>Hi django</body></html>"
    return HttpResponse(html)

def welcome(request):
    html = "<html><body>Welcome to django</body></html>"
    return HttpResponse(html)

 

urls.py

from django.contrib import admin
from django.urls import path
from .views import index, welcome

urlpatterns = [
    path('admin/', admin.site.urls),
    path("", index),
    path("welcome/", welcome),
    # path(주소, 뷰, 주소의 별명)
]

 

결과

url 설정


3. 템플릿 설정

- html 파일 등을 따로 만들어 둔 후, 해당 디렉토리의 파일로 연결

templates 디렉토리 생성

 

settings.py

...

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        #템플릿이 들어있는 폴더 지정 가능(여러개)
        'DIRS': [
            os.path.join(BASE_DIR, 'templates')
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

...

 

views.py

from django.http import HttpResponse
#템플릿을 렌더링
from django.shortcuts import render

def index(request):
    # 어떤 계산이나, 데이터베이스 조회, 수정, 등록
    # 응답 메시지를 만들어서 반환.
    # html 변수를 대신해서 템플릿 사용 가능
    html = "<html><body>Hi django</body></html>"
    return HttpResponse(html)

def welcome(request):
    html = "<html><body>Welcome to django</body></html>"
    return HttpResponse(html)

def template_test(request):
    # 기본 템플릿 폴더
    # 1. admin 앱
    # 2. 각 앱의 폴더에 있는 templates 폴더
    # 3. 설정한 폴더
    return render(request, 'test.html')

 

urls.py

from django.contrib import admin
from django.urls import path
from .views import index, welcome, template_test

urlpatterns = [
    path('admin/', admin.site.urls),
    path("", index),
    path("welcome/", welcome),
    path("test/", template_test)
    # path(주소, 뷰, 주소의 별명)
]

 

 test.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
이것은 템플릿 연습 파일입니다.
</body>
</html>

 

결과

!


연습해볼것들.

 

함수형 뷰 만들기, 템플릿 만들기, URL 연결하기, 브라우저로 접속해보기

 


출처 - https://youtu.be/IHeqWpRKnbM

반응형

댓글

💲 추천 글