Django : Template Language (DTL)
벌써 django의 3번째 시간이다. 이전 시간에 흐름을 대충 알았다면 단순히 html 페이지를 띄우는 거에서 다양한 방식으로 랜더링 할 수 있는 심화 과정이다. (물론 심화 아닌 심화..) 여기서부터는 헷갈리는 부분이 많아서 천천히라도 정확하게 이해하는 것이 좋을 것 같다.
저번 시간에는 index 페이지를 띄우기 위한 설정들 U-V-T : urls.py - Views.py - Templates 를 살펴보았다. 이어서 공부 할 예정이므로 미리 설정들을 보여주자면
여기까지는 잘 따라 왔을 것이다. 혹시나 project의 settings.py 에서 app 연결을 빼먹진 않았는지도 한번 확인해주면 좋다.
그럼 로그인을 하려는 페이지 혹은 접속하는 페이지를 만든다고 생각해보자. 일반적으로 출력되는 안녕하세요 뒤에 사용자의 이름을 나오게 하려면 어떻게 할까? 나를 제외한 CodingLarva가 아니기 때문에 html에 글자를 명시하는 것 보다는 다른 형태로 데이터를 호출해야 하지 않을까?
이번에는 과정을 거꾸로 올라가보자. index.html에 데이터를 넣어줘야 하는 상황이라면 이전 상황에서부터 데이터가 넘어와야한다. 결국 Views 함수에서부터 넘어 오는 것을 쉽게 눈치 채야 한다.
HTML의 콘텐츠를 변수의 값에 따라 바꾸기를 해보자
딕셔너리 형태로 templates에 전달할 context data를 나타낸다. 이는 전달된 templates 에서 변수로 사용될 수 있다. 위의 예시로는 templates의 articles dir 내부의 index.html로 전달된 것이므로 우리는 이제 index.html 파일에서 context를 다룰 수 있다. 물론 호출하는 형태로 말이다.
데이터를 불러오는 방법은 {{ }} 을 사용하는 것이며 내부에는 context의 key값이 쓰이게 된다. (바로 아래에 내용 나옴!!)
그래서 {{ }} 가 뭔데?
Django Template Language (DTL)
: Template에서 조건, 반복, 변수 등의 프로그래밍적 기능을 제공하는 시스템
: Django 프레임 워크를 통해 HTML을 보다 동적으로 만들수 있다
- Variable : 변수
- Filters : 필터
- Tags : 태그
- Comments : 코맨트
Variable
- render 함수의 세번째 인자로 딕셔너리 데이터를 사용
- 딕셔너리{ 'key': value }에서 key에 해당하는 문자열이 template에서 사용 가능한 변수명
- dot(' . ')을 사용하여 변수 속성에 접근할 수 있음 (key 값으로 불러온 내부에 속성이 추가로 있다면 접근)
Filters
- 표시할 변수를 수정할 때 사용 (변수 + ' | ' + 필터) "| 는 shift + 역슬래시(\)"
- 연속해서(chained) 사용이 가능하며 일부 Filter는 인자를 받기도 한다
- 약 60개의 built-in template filters가 있다
Tags
- 반복 또는 논리를 수행하여 제어하고 흐름을 만든다
- 일부 태그는 시작과 종료 태그가 필요하다
- 약 24개의 built-in templates tags를 제공한다
- 화면에 출력되지 않고 기능을 담당하는 역할로 {% tag %}를 사용하며 파이썬과 동일하게 반복문 for, 조건문 if를 포함한다
Comments
- 주석
- {# 내용 #} 혹은 {% comment %} {% endcomment %}로 전체를 감쌀 수 있다 주로 후자가 사용된다
- 단축키는 다른 주석 처리와 동일하게 Ctrl + ' / '
위에서 배운 것들을 실습해보자.
- 운동할 부위는 랜덤으로 뽑는다
- 뽑힌 부위의 글자수를 출력한다
- 분할 스케쥴의 세부 사항을 모두 출력한다
물론 tags와 filters를 모두 외울 수 없으니 공식문서를 참고할 수 있다.
Django
The web framework for perfectionists with deadlines.
docs.djangoproject.com
솔직히 한두번만에 이런걸 구현할 수 있을리가 없다. css는 검색하면서 한다고해도 Back-end는 외우는 것이 대부분이다. 또한 알고있어야 사용이 가능하니까. 그래도 파이썬을 처음 배우기 시작하고 알고리즘만 풀다가 친숙한 Tags를 사용한다던가. 뭔가 여태 떡밥을 뿌렸던 정보들이 회수되는 기분이랄까? 솔직히 ... 알고리즘도 재밌고 프론트도 재밌고 백도 재밌다~~~ 뿌듯해