본문 바로가기
Python

Views.py : render 함수와 템플릿

by Mr.DonyStark 2024. 4. 15.

□ render함수와 template 파일 관계
  ○ 웹사이트 개발시 파이썬 코드와 데이터를 템플릿 파일로 만들어주는 함수
  ○ 쉽게말해 HTML 로 변환해서 적용해주는 함수
  ○ 결국 HTML 파일로 리턴 by using render
  ○ 리턴한 HTML 파일을 템플릿(Template) 이라고 함
  ○ but, 템플릿(Template)이 HTML 파일인 것은 아님
  ○ 이러한 템플릿 파일은 대부분 프레임워크에서도 마찬가지인데 프레임워크 전용파일의 개념임.

return render(request,"템플릿파일 경로")

 

 ○ 장고에서만 사용할 수 있는 문법(또는 태그)등을 이러한 템플릿에 적용 → 일반적인 HTML파일이 아님.
 ○ 당연히 템플릿도 규칙과 최소한의 문법(템플릿 태그라 불리우는 것들)이 존재.

 

□ 템플릿 파일의 목적(용도)
 ○ 뷰페이지 처리
 ○ 개발과 디자인의 분리

 ○ 개발자 코드와 디자이너 코드의 분리(HTML, CSS)
 ○ 다른 프레임워크들에서도 보통 template(s) 이라는 폴더명을 만들어서 템플릿 폴더로 인식시켜서 사용.

□ 템플릿(template) 폴더 만들기

 ○  첫번째 : 프로젝트 루트 폴더에 templates 폴더를 만들어서 사용 → 상휘 폴더 settings.py → 템플릿경로 추가하여 사용
 ○  두번째 : **생성한 앱(APP) 폴더 바로 하위에다가 → templates 폴더를 만들어서 사용 → 앱별로 템플릿 사용이 가능.
    ▶ 즉, onememos 앱의 경우 하위에 templates 폴더를 생성하면 별다른 설정없이 바로 템플릿 디렉토리 인식.
    ▶ render 코딩이 끝나면 서버 재시작 py manage.py runserver

 

from django.shortcuts import render
from django.http import HttpResponse #해당 페이지에대한 응답관련 라이브러리 
from .models import *

def main(request):  #requests에 주소가 매게변수로 들어감 / index 또는 main으로 기재해도됨
    #요청에 따른 응답으로 뿌려주겠음
    #return HttpResponse("OneMemos!Hello, World!:-)"
    return render(request, "main.html") #templates>main.html을 틀어놓은다.

def createMemo(request): #requests에 주소가 매게변수로 들어감 / index 또는 main으로 기재해도됨
    #요청에 따른 응답으로 뿌려주겠음
    #방식으로는 Get과 Post 방식이있음 ▷ request.GET, request.POST 등 ▷ 사전형 데이터
    #memoContent = request.GET["memoContent"]  memocontent 데이터인자를 받아 get한 후 페이지 로드
    #/onememos/createMemo/?memoContent=데이터값 형태의 url
    # memoContent = request.GET["memoContent"]
    memoContent = request.POST["memoContent"] 
    memoName = request.POST["memoName"]
    memoEmail = request.POST["memoEmail"]
    return HttpResponse("Create Memo = "+ memoContent + memoName + memoEmail)

onememos 라는 디렉토리안에 템플릿 디렉토리를 만들고 views.py에서 render를 활용해 특정 request에 따른 템플릿 연동진행

 

/onememos/ url을 입력하면 temlplate 페이지가 표시되도록 구현

'Python' 카테고리의 다른 글

앱(App) 생성 및 Urlpatterns 정의  (0) 2024.04.11
[Python] 전역변수, 지역변수  (0) 2023.11.01