-
6. Django: TemplatesPython/초간단 장고 Django 2019. 7. 8. 20:15반응형
알 필요는 없지만 장고의 템플릿 엔진을 DTL(Django Template Language)이라고 합니다.
다른 템플릿 엔진도 사용이 가능하며, 템플릿 엔진에 관한 설정은 config/settings.py 에서 찾아볼 수 있습니다.
다른 템플릿 엔진을 사용하는 것을 추천하진 않더군요.
장고에서 클래스 뷰의 템플릿 폴더는 기본적으로 'app/templates/app'를 이용합니다.
'app/templates' 까지는 이해가 가는데 뒤에 'app'이 한번 더 나오는 이유가 궁금하실 겁니다.다른 앱에 동일한 이름의 템플릿이 있는 경우 Django는 이들을 구분할 수 없습니다.
그래서 app이름으로 네임 스페이스를 만들어 둡니다.하지만 앱이 하나 뿐이라면..작성한 템플릿이 자동 인식이 되지 않을 때(폴더를 만든 경우?)가 있습니다.
장고를 재시작하면 됩니다.클래스 뷰를 설명할 때 테이블이 object_list 변수에 담겨서 템플릿에 넘어온다고 설명을 드렸습니다.
{{object_list}}로 직접 확인해봅니다.
<!-- bookmarks/templates/bookmarks/bookmark_list.html --> {{object_list}}
<QuerySet [<Bookmark: 야후>]>
오~! 잘 넘어왔네요.
장고 템플릿 언어에서는 HTML과 템플릿 언어를 분리하기 위해 {}를 사용합니다.
{{}}는 변수, {%%}는 코드, {##}는 주석입니다.
{{object_list}}를 그대로 쓸 수는 없으니까 언패킹 합니다.
파이참에서 HTML을 생성(alt + insert)하면 기본 폼이 나와주니 작업하기 편합니다.
<!-- bookmarks/templates/bookmarks/bookmark_list.html --> <!DOCTYPE html> <html lang="ko"> <head> <meta charset="UTF-8"> <title>Bookmarks</title> </head> <body> <h1>북마크</h1> <div id="bookmark_list"> <ul> {% for bookmark in object_list %} <li>{{bookmark.title}} <a href="{{bookmark.url}}" target="_blank">{{bookmark.url}}</a></li> {% endfor %} </ul> </div> </body> </html>
잘 작동됩니다.
장고의 MTV 구조에 맞춰,
뼈대만을 추려,
최대한 간단히 쓰면서도
꼭 필요한 설명은 빠트리지 않으려고 노력했습니다.
도움되셨기를 바라며..
이제 장고 공식 홈페이지의 튜토리얼을 보시거나,
장고 걸스의 튜토리얼을 보러 갑시다.
https://docs.djangoproject.com/ko/3.0/intro/tutorial01/
https://tutorial.djangogirls.org/ko/django_start_project/
가기 전에 도움 되셨다면 광고도 한번씩 봐주시면 감사하겠습니다. ㅎㅎ
반응형