백엔드 공부/Django

[Django] 장고 템플릿 태그 및 user관련 템플릿 문법

박현준(-ㅅ-) 2023. 2. 4. 20:15

Template Language

알아볼 템플릿 문법은 총 2가지입니다.

1. 템플릿 태그

2. user관련 문법

 

본격적으로 포스트를 들어가기전에 예시를 돕기 위한 설정을 하나 세우겠습니다.

"게시판 프로젝트에서 카테고리에 다양한 게시판들을 나열할 기능을 구현할 계획"

 

 

{% for in %} ... {% endfor  %} 템플릿 태그

board_app/models.py

class BoardName(models.Model):
    board_name = models.CharField(max_length=50)

 저는 board_name에 5개정도 데이터를 넣었습니다. 
모두 아시겠지만 모델을 설정하고 migration화를 진행해주셔야합니다.

 

 

board_app/views.py

from .models import BoardName

def index(request):
    data = BoardName.objects.all()
    return render(request, 'board_app/index.html', {'value': data})

핵심이 되는 것은 사용할 모델을 임폴트하고 .objects.all()로 모든 데이터를 저장하는 과정입니다.
그 다음 딕셔너리 형태로 보내는 것이죠.

 

board_app/index.html

{% for i in value %}

	<li>
		<a href="#">{{ i.board_name }}
		</a>
	</li>
    
{% endfor %}

이제 html에서 {% for in %} 문법을 사용해 주는 것입니다. 파이썬 문법 그대로 이해하시면 됩니다. value에 있는 값 개수만큼 반복하는 거죠. 제가 5개를 저장해 놓았으니 5번 반복합니다. 

 

{% if %} ... {% elif %} ... {% else %} ... {% endif %} 템플릿 태그

추가로 if에 관한 문법도 사용할 수 있습니다.

{% if i.Count > 100 %}
<p>조회 카운팅이 10이상 입니다.</p>
 
{% elif i.Count > 60 %}
<p>조회 카운팅이 60이상 100미만 입니다.</p>

{% else %}
<p>조회 카운팅이 60미만 입니다.</p>

{% endif %}

이런 형식으로 사용할 수 있습니다. 

항상 for이던 if던 {% endfor %}, {% endif %} 이렇게 마무리 닫기 해주셔야합니다.

 

그 다음은 user에 대해 간단한 템플릿 문법을 알아보겠습니다.

현재 접속중인 USER의 아이디(username)을 가져오는 방법

html문서에 작성

{{ user.get_username }}

 

 

이상 간단하지만 강력한 템플릿 문법에 대한 글이었습니다. 감사합니다.