10.Django(장고) - ecommerce 프로젝트 - 템플릿 문법

JungSik Heo·2024년 12월 4일

🌈 Template Language

🔥 Template 태그 : {% 문법 %}
🔥 Template 변수 : {{ 변수 }}
🔥 Template 필터 : {{ 변수|옵션 }}

참고 : https://docs.djangoproject.com/en/3.2/ref/templates/builtins/

1. Template 태그 : {% 문법 %}

1) {% for in %} ~ {% endfor %}
탬플릿 태그을 통해 python 문법의 if, else, for문을 사용할 수 있고,, extends, block, include 등을 통해 다른 템플릿을 상속받거나 포함시킬 수 있답니다.
{{forloop.counter}}는 반복문안에서 사용하면 반복 횟수만큼 count해줍니다.
🔍 {{forloop.counter}} : 1부터 반복횟수만큼 count
🔍 {{forloop.counter0}} : 0부터 반복횟수만큼 count
🔍 {{forloop.revcounter}} : 전체 길이로 시작해서 1까지 count
🔍 {{forloop.revcounter0}} : 전체 길이로 시작해서 0까지 count

def for_loop(request):
    post_list = Post.objects.all
    context = {'post_list': post_list}
    return render(request, 'boards/for_loop.html', context)
<!DOCTYPE html>
<html lang="en">

  <head>
    <title>Document</title>
  </head>

  <body>
    <h1>Template Language!</h1>
    <p>{{post_list}}</p>
    {% for i in post_list %}
      <div>번호 :{{forloop.counter}}번째 data</div>
      <div>제목 :{{i.title}}</div>
      <div>조회수 :{{i.hit}}</div>
      <div>내용 :{{i.content}}</div>
      <br/>
    {% endfor %}
  </body>

</html>

2) {% if %} .. {% elif %} .. {% else %} .. {% endif %}

  • 탬플릿 태그를 통해 if, elif, else문도 아래 처럼 사용할 수 있어요!
{%load static%}
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Document</title>
  </head>
  <body>
    <h1>Template Language!</h1>
    <h1>Template Language!</h1>
    <p>{{post_list}}</p>
    {% for i in post_list %}
      <div>번호 :{{forloop.counter}}번째 data</div>
      <div>제목 :{{i.title}}</div>
      {% if i.hit==0%}
        <div>조회수 :{{i.hit}}</div>
        {%else%}
        <div>조회수가 0 초과 입니다. :{{i.hit}}</div>
        {%endif%}
        <div>내용 :{{i.content}}</div>
        <br/>
      {% endfor %}
  </body>
</html>

3. Template 변수 : {{ 변수 }}

  • view에서 변수에 데이터를 넣어 템플릿으로 전달하면 html 파일 안에서 해당 변수를 쉽게 사용할 수 있어요. Dict형, list형 모두 전달 가능 합니다.
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Document</title>
  </head>
  <body>
    <h1>Template Language!</h1>
    <p>{{post_list}}</p>
    {% for i in post_list %}
      <div>번호 :{{forloop.counter}}번째 data</div>
      <div>제목 :{{i.title}}</div>
      {% if i.hit == 0 %}
        <div>조회수 :{{i.hit}}</div>
        {%else%}
        <div>조회수가 0 초과 입니다. :{{i.hit}}</div>
        {%endif%}
        <div>내용 :{{i.content}}</div>
        <br/>
      {% endfor %}
      <p>
        <div>price 출력 :
          {{price}}</div>
        <div>l의 0번째 값은 :
          {{price.0}}</div>
        <div>l의 1번째 값은 :
          {{price.1}}</div>
        <div>l의 2번째 값은 :
          {{price.2}}</div>
      </p>
      <p>
        <div>name 출력 :
          {{name}}</div>
        <div>name의 key(name) 값은 :
          {{name.name}}</div>
        <div>name의 key(age)) 값은 :
          {{name.age}}</div>
        <div>name의 key(location) 값은 :
          {{name.location}}</div>
        <div>name의 key(isman) 값은 :
          {{name.isman}}</div>
      </p>
    </body>
  </html>

4. Template 필터 : {{ 변수|옵션 }}

Django Templates에서 lorem 사용하는 방법은 아래와 같아요:)
🔍 {{ lorem [count][mehod][random] }}

{%load static%}
<!DOCTYPE html>
<html lang="en">
  <head>
    <title>Document</title>
  </head>
  <body>
    <h1>Template Language!</h1>
    {% with value='hello Django'%}
    <h4>{{value}}</h4>
    {% endwith %}
    {% lorem %}    <!-- 👈 lorem 생성 -->
	{% lorem 3 p%} <!-- 👈 lorem 문장(p)을 3개 생성 -->
    {% lorem 2 w random %} {% lorem 5 w random %} <!-- 👈 lorem 단어(w)을 5개 랜덤 생성 -->
  </body>
</html>

내장 템플릿 필터

https://himanmengit.github.io/django/2018/02/23/Built-In-Template-Filter.html

https://velog.io/@jewon119/Django-%EA%B8%B0%EC%B4%88-Template-Language

profile
쿵스보이(얼짱뮤지션)

0개의 댓글