Django로 Pinterest 따라 만들기 강좌의 맛보기 강의입니다.
작정하고 DJANGO 8강 시작해 보도록 하겠습니다. 일단 강좌 진행을 하기 전에 앞선 강좌에서 git을 활성화를 했잖아요. 그런데 지금 보니까 pycache라는 추가적인 gitignore에 들어가야 하는 파일이 아직 들어가지 않아서 원하지 않는 불필요한 것이 추적이 되고 있더라고요. 그래서 그것을 없애주는 과정을 일단 먼저 하고 그러고 나서 진행하도록 하겠습니다. 없애야 될 것은 여기서 accountapp에 있는 pycache 그리고 pragmatic 폴더 안에 있는 pycache 두 폴더를 없애 주시고 그러고 나서 저희가 쓰던 git을 확인해 보면 git status를 쳐 보게 되면 다 지워졌다고 나오게 되죠. 그러면 추가를 하고 commit을 다시 할게요. Delete redundant files 이런 식으로. 없어졌죠. 그러고 이렇게 하면 추적이 안 되는 상태로 바뀐 거고 여기에서 개발 시작하기 전에 gitignore을 다시 열어 주시고 여기 안에 pycache를 쳐 주면 나중에 pycache가 생겼을 때에도 추가적으로 다시 추적을 하는 일이 없을 것입니다. 이 정도에서 다시 시작해 보도록 하겠습니다. 이번 강의에서는 앞서 말씀드렸다시피 HTML을 사용한 장고 템플릿을 어떻게 사용하는지에 대해서 간략하게 설명하고 넘어가겠습니다. 내용은 HTML이 주로 되는데, HTML의 약자가 Hyper Text Markup Language인데 Hyper Text는 문서 간 이동이 가능한 텍스트라고 보시면 되고 Markup은 써 내려간다고 이해해 주시면 될 것 같고 Language는 말 그대로 언어죠. 지금 영어 시간은 아니니까 자세하게 들여다 볼 필요는 없지만 이런 식으로 된 언어라고 보시면 됩니다. 논외로 프로그래밍할 때 영어를 잘하면 정말 좋은 것은 맞습니다. 일단 넘어가고 장고 Template에서 자주 쓰이는 구문을 알아볼 거예요. 자주 쓰이는 구문이 extends와 include 구문이 있는데 2개의 차이는 html을 가져온다는 느낌은 비슷한데 사용 용도가 살짝 달라요. 자세히 들여다보면 extends 구문은 이런 식으로 미리 만들어 놓은 html 파일이 있다. template처럼 구역을 나눠서 이런 식으로 html 파일을 먼저 만들어 놓아요. 그러면 이것을 가져와서 이것을 바탕으로 이 안에 있는 블록들이나 나머지 내용들을 채워나가는 형식으로 extends 구문을 사용해서 html을 만듭니다. 반대로 include 같은 경우에는 만들고 있는 html 파일이 있다고 하면 거기에 조그마한 조각 같은 것을 가져가서 템플릿 안에 박아 넣는 느낌으로 사용하는 거예요. 그래서 extends는 바탕을 깔아주는 느낌이고 include는 덩이를 가져와서 갖다 붙이는 느낌인 거죠. 결과적으로 양쪽에서 보면 extends로 바탕을 만들고 include로 내용을 채우는 느낌으로 진행이 되지 않을까 싶어요. 결론적으로 중간에 있는 양쪽에 extends와 include를 모두 포함한 결과물이 요청을 받았을 때 되돌려 줄 Response View가 되겠죠. 그래서 이것을 한번 만들어 보도록 하겠습니다. 일단 먼저 template 폴더를 만들어 줘야 해요. 폴더를 어디에 만드냐 하면 pragmatic 폴더 있죠. Project 폴더에 새로운 디렉토리를 만들 거예요. templates, -s를 붙여야 하고 templates라는 새로운 폴더를 만들 거예요. 그럼 이 폴더 안에 완전 기초가 되는 root html 파일을 하나 만들 거예요. 그래서 이름은 base라고 해서 git에 추가할 거냐고 물어보는데 추가를 하겠습니다. 쓰는 대로 계속 변화를 추적해야 되니까 추적을 하고 내용을 보면 이런 식으로 간단하게 html 파일을 먼저 만들어 줘요, 파이썬이 기특하게. 그래서 이것을 어떻게 사용하는지 기본적인 방법부터 확인해 볼게요. base.html이 templates라는 폴더 안에 있음으로써 accountapp에서 view에서 응답해 줄 때 template을 가져와서 그 안에 내용을 박아넣을 수 있는 형태로 사용할 수 있어요. 그래서 이때는 HttpResponse 같은 경우는 Response를 view에서 직접 만들어서 되돌려 주는 형태인데 그것이 아니라 html 파일 그러니까 template을 가지고 와서 거기 안에 내용을 채워넣는 형식으로 응답을 만들어 볼 거예요. 그래서 그것을 하기 위해서는 HttpResponse가 아니라 return을 하는데 return 해서 render, 지금 미리 import 돼 있었죠. 이것을 사용해서 반응을 만들어 줍니다. 여기에서 첫 번째 인자로 넘겨줘야 될 것은 request예요. request를 넘겨 주고 그다음으로는 여기 하이라이트가 되죠. template name을 적어 줘야 됩니다. 저희가 만들었던 것이 base.html이죠. base.html을 만들어 주고 이 상태로 서버를 한번 켜 볼게요. 서버를 켜 보고. 이것은 예습을 했었던 것이고. 딱 해 보면 TemplateDoesNotExist. Template이 존재하지 않는다는 에러가 뜨면서 구동이 제대로 안 되는 것을 볼 수 있어요. 이것을 분명히 했는데 왜 안 되냐 하면 먼저 pragmatic의 root app에서 setting.py를 들어간 다음에 여기에서 쭉쭉 내리다 보면 TEMPLATES라는 리스트가 하나 있을 거예요. 여기서 경로들을 입력해 줘야 하는데 이것을 어떻게 하느냐. os.path.join(BASE_DIR, 'templates') 우리가 만들었던 경로죠. 폴더 이름을 그대로 넣어 줍니다. 그러면 장고가 templates가 어디 있는지 알고 거기 안에 있는 html 파일들을 방금 만들었던 view에서 쓴 base.html이랑 연결시켜 줄 것입니다. 그래서 새로고침을 한 다음에 보게 되면, 뭐가 없어졌죠. 원래는 에러가 났었는데 아무것도 없어요. 왜냐하면 지금 base.html 안에 아무것도 없거든요. 그래서 안에 Hello world!를 써 볼게요. 계속 우려먹는 거죠. Hello world!를 또 써서 확인해 보면 이런 식으로 우리가 넣은 Hello World!가 나오는 것을 볼 수 있습니다. 그래서 지금까지 해 봤고 이 정도에서 일단 끊어 볼게요. 여기에서 일단 이 정도 했으니까 그리고 중요한 것은 지금까지 했던 것들 있잖아요. 했던 것들을 git에 commit을 할 거예요. 그러면 무엇이 바뀌는지 확인해 볼게요. base.html 파일이 새로 생겼고 아까 제일 처음에 했었던 것처럼 gitignore 파일에 pycache를 수정했기 때문에 이것이 또 바뀌었고 views도 바뀌었죠. render function을 이용해서 응답을 만들었으니까 바뀌었고 settings.py도 방금 말했듯이 template에 경로를 지정해 주면서 바뀌었어요. base.html도 당연히 아까 했던 것처럼 제일 처음 것과 달리 Hello world!가 들어갔으니까 바뀐 것이죠. 이것을 모두 다 추가할게요. git commit - m "djust Django course 8 commit" 이렇게 써 놓고 commit을 하면 이렇게 정상적으로 commit이 됐다고 확인이 되고 여기 파일 창에서 보면 방금 파란색이 있었다가 다 흰색으로 바뀌는 것을 볼 수 있죠. 그러니까 이것이 지금 기본 상태가 되었다는 거예요. 이런 식으로 버전 업을 계속 꾸준히 git을 통해서 해 나갈 것입니다. 이번 강의는 여기까지고요 다음 강의에서 뵙겠습니다.
