작정하고 장고 8강 - 장고 Template extends include 구문, render : Django로 Pinterest 따라하기!

IkSun·2023년 3월 29일

작정하고 장고

목록 보기
8/46

이전 강의에 더불어 추적 방지 구문 추가.
/Users/사용자/PycharmProjects/pragmatic/accountapp/__pycache__
/Users/사용자/PycharmProjects/pragmatic/pragmatic/__pycache__

두 파일을 모두 삭제 후 git status 로 삭제 되었음을 확인하였다.

이 후 .gitignore 파일 밑에 __pycache__/ 추가하여 나중에 pycache 가 생겼을때도 다시 추적을 하는 일이 없도록 만들어준다.

HTML - Hyper Text Markup Language

django 의 Template

둘의 차이를 말하자면 HTML 을 가져온다는 느낌은 비슷하나 용도가 다르다

extends 구문

왼쪽 그림과 같이 미리 만들어 놓은 html 파일이 있는데 이는 template 처럼 구역을 나누어서 다음과 같이 html 파일을 먼저 만들어놓는다

만들어놓은 html 파일을 바탕으로 이 안에 있는 블럭들이나 그 나머지 내용들을 채워 나가는 형식이다 -> 이떄 extends 구문을 이용해서 html 을 만든다

include 구문

반대로 include 같은 경우에
만약 우리가 만들고 있는 어떤 html 파일이(왼쪽 그림) 있다고 가정을 하면 거기에다가 조그만한 조각같은것들을 가져와서 블럭 안에 박아 넣는 느낌으로 사용

extends 로 바탕을 만들고 include 로 내용을 채워나가는 느낌

extends 와 include 를 모두 포함한 결과물인 가운데의 것이
요청을 받았을 때 되돌려줄 Reponse View 가 되는것이다.

이것을 만들어보는 실습

template 폴더 만들기

루트 pragmatic 폴더 안에 templates 라는 폴더를 만들어 그 안에는 완전 기초가 되는 root html 파일을 만들것이다 -> 이름은 base.html

base.html 폴더가 templates 폴더 안에 있으므로써 accountapp 안에 views.py 에서 응답을 해줄때 템플릿을 가져와서 그 안에다가 내용을 박아 넣을 수 있는 형태로 사용할수있다.

이때 HttpResponse 는 response 를 view 에서 직접 만들어서 되돌려주는 형태인데 그게 아니라 존재하는 html 파일 그러니까 템플릿을 가지고 와서 그 안에다가 내용을 채워넣어주는 형식으로 응답을 만들어볼것이다.

HttpResponse 가 아니라 다음과 같이 작성.

def hello_world(request):

첫번쨰 인자로는 request 를 넘겨주고 그 다음으로는 template name 을 적어주어여 한다. 우리 프로젝트에서는 base.html 이다. 이 상태로 서버를 구동 -> python manage.py runserver -> http://127.0.0.1:8000/account/hello_world 이 링크로 들어간다

template 이 존재하지 않는다는 에러가 뜨면서 화면이 표시 되지 않는다.
왜 안되는지..?

root app 인 pragmatic 에서 settings.py 파일을 들어간 뒤 TEMPLATES 라는 리스트의 'DIR' (디렉토리명) 경로들을 입력 해주어야 한다. -> 'DIRS': [os.path.join(BASE_DIR, 'templates')] 라고 적어주고 여기서 templates 는 우리가 만들었던 폴더 이름이다.

장고가 이 templates 가 어디에 있는지 알고서 거기 안에 있는 이 html 파일들을 방금 수정했던 views.py 에서 'base.html' 이랑 연결을 시켜주는것이다.

새로고침을 한 다음에 확인하면

빈 화면인 이유는 지금 base.html 안에 아무것도 없기 떄문에다.

<!-- base.html -->
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    Hello World!
</body>
</html>

다음과 같이 작성하면 우리가 작성한 "Hello World!" 가 출력된다.

지금까지 했던것들을 git 에 commit

git status 결과 new file 인 templates/base.html 이 생겼고 그밖에
수정된 파일 존재 -> git add . -> ```git commit -m "djust Django course 8 commit"

profile
공부한 것 기록용

0개의 댓글