The Definitive Guide To Django 2 학습노트(8) 제4장 템플릿(4) 기본 템플릿 레이블 및 필터

10204 단어 django
라벨
다음 섹션에서는 일반적인 Django 태그에 대해 간략하게 설명합니다.
if/else
{%if%} 탭은 변수 값을 테스트합니다. 결과가true이면 {%if%}와 {%endif%} 사이의 모든 것을 보여 줍니다. 예를 들어 다음과 같습니다.
{% if today_is_weekend %}

    <p>Welcome to the weekend!</p>

{% endif %}

    An {% else %} tag is optional:

{% if today_is_weekend %}

    <p>Welcome to the weekend!</p>

{% else %}

    <p>Get back to work.</p>

{% endif %}

{%if%} 탭은 and, or, not를 받아들여 다변수를 테스트합니다. 아래의 예를 참고하십시오.
{% if athlete_list and coach_list %}

    Both athletes and coaches are available.

{% endif %}

{% if not athlete_list %}

    There are no athletes.

{% endif %}

{% if athlete_list or coach_list %}

    There are some athletes or some coaches.

{% endif %}

{% if not athlete_list or coach_list %}

    There are no athletes or there are some coaches.

{% endif %}

{% if athlete_list and not coach_list %}

    There are some athletes and absolutely no coaches.

{% endif %}

{%if%} 탭은 and와 or가 같은 탭 문장에 동시에 나타나는 것을 받아들이지 않습니다. 왜냐하면 잘못된 뜻을 일으킬 수 있기 때문입니다.예를 들면 다음과 같습니다.
{% if athlete_list and coach_list or cheerleader_list %}

괄호는 여기에서 지원되지 않습니다. 필요하면 논리를 템플릿의 바깥쪽에 놓고 지정한 템플릿 변수를 결과로 내보낼 수 있습니다.또는 중첩 {%if%} 태그:
{% if athlete_list %}

    {% if coach_list or cheerleader_list %}

    We have athletes, and either coaches or cheerleaders!

    {% endif %}

{% endif %}

같은 조작부호를 여러 번 사용하는 것은 가능하지만, 동시에 여러 개의 다른 조작부호를 사용하는 것은 불가능하다.다음 문은 유효합니다.
{% if athlete_list or coach_list or parent_list or teacher_list %}

{%elif%} 탭이 없습니다. 끼워 넣은 {%if%} 탭으로 같은 일을 완성합니다.
{% if athlete_list %}

    <p>Here are the athletes: {{ athlete_list }}.</p>

{% else %}

    <p>No athletes are available.</p>

    {% if coach_list %}

    <p>Here are the coaches: {{ coach_list }}.</p>

    {% endif %}

{% endif %}

모든 {%if%}이 {%endif%}에 대응하는지 확인하십시오. 그렇지 않으면 Django는TemplateSyntaxError의 이상을 던집니다.
for
{%for%} 시퀀스에 있는 모든 항목을 순환할 수 있습니다. 형식은 for X in Y이고, Y는 옮겨다니는 집합이며, X는 변수 이름입니다.매번 순환할 때마다 템플릿 시스템은 {%for%}와 {%endfor%}의 내용을 보여 줍니다.
예를 들면 다음과 같습니다.
<ul>

    {% for athlete in athlete_list %}

    <li>{{ athlete.name }}</li>

    {% endfor %}

</ul>

컬렉션을 반전할 수도 있습니다.
{% for athlete in athlete_list reversed %}

...

{% endfor %}

네스트할 수도 있습니다.
{% for athlete in athlete_list %}

    <h1>{{ athlete.name }}</h1>

    <ul>

    {% for sport in athlete.sports_played %}

    <li>{{ sport }}</li>

    {% endfor %}

    </ul>

{% endfor %}

자주 사용하는 모드 중 하나는 순환하기 전에 리스트의 크기를 검사하고, 리스트가 비어 있으면 특수한 텍스트를 출력합니다
{% if athlete_list %}

{% for athlete in athlete_list %}

<p>{{ athlete.name }}</p>

{% endfor %}

{% else %}

<p>There are no athletes. Only computer programmers.</p>

{% endif %}

이 방법은 너무 자주 사용되기 때문에, for 탭은 선택할 수 있는 {% Empty%} 옵션을 지원하여 사용자 정의 텍스트를 출력할 수 있습니다.예를 들면 다음과 같습니다.
{% for athlete in athlete_list %}

<p>{{ athlete.name }}</p>

{% empty %}

<p>There are no athletes. Only computer programmers.</p>

{% endfor %}

for 탭은break,countinue를 지원하지 않습니다.
{%for%} 탭에서 forloop 변수에 접근할 수 있습니다. 이 변수는 몇 가지 자주 사용하는 속성이 있습니다.
1.forloop.counter: 몇 번 순환했는지 기록하는 데 사용
2.forloop.counter0:forloop과 유사합니다.counter0, 0에서 시작하는 것에 불과합니다.
3.forloop.revcounter: 아직 옮겨다니지 않은 항목의 수를 기록하는 데 사용합니다
4.forloop.revcounter 0: revcounter와 유사하지만 계수는 0에서 시작합니다
5.forloop.first: 첫 번째 항목인지 여부를 표시하는 부울 값
6.forloop.마지막 항목인지 여부를 표시하는 데 사용되는 부울 값
ifequal/ifnotequal
{%ifequal%} 탭은 두 값을 비교합니다. 만약 그들이 같다면 {%ifequal%}와 {%endifequal%} 사이의 모든 코드를 표시합니다.
{% ifequal user currentuser %}

<h1>Welcome!</h1>

{% endifequal %}

매개 변수는 하드 인코딩일 수 있기 때문에 다음 예는 모두 유효합니다.
{% ifequal section 'sitenews' %}

<h1>Site News</h1>

{% endifequal %}

{% ifequal section "community"%}

Community

{% endifequal %}
{%if%}와 유사하며 the {%ifequal%} 탭도 옵션 {%else%}을 지원합니다
{% ifequal section 'sitenews' %}

<h1>Site News</h1>

{% else %}

<h1>No News Here</h1>

{% endifequal %}

템플릿 변수, 문자, 정수 및 부동 소수점 유형만 비교 매개변수로 사용할 수 있습니다. 다음은 유효한 예입니다.
{% ifequal variable 1 %}

{% ifequal variable 1.23 %}

{% ifequal variable 'foo' %}

{% ifequal variable "foo" %}

다른 종류인 List, 사전, 볼 종류는 {%ifequal%}의 매개 변수로 사용할 수 없습니다.
{% ifequal variable True %}

{% ifequal variable [1, 2, 3] %}

{% ifequal variable {'key': 'value'} %}

잘못된 매개변수입니다.True 또는 False가 맞는지 테스트하려면 {%ifequal%}
메모
{##}을 사용하고, 여러 줄 주석은 {%comment%}과 {%endcoomment%}를 사용합니다.
 
필터
템플릿 필터링은 이들을 표시하기 전에 변수 값을 변경하는 가장 간단한 방법입니다.예를 들어: {{name|lower}, 이것은name의 값을 소문자로 바꾸고 표시합니다.
필터는 여러 개의 연속으로 사용할 수 있습니다.
{{ my_list|first|upper }}

 

좋은 웹페이지 즐겨찾기