바뀜

4,117 바이트 추가됨 ,  2021년 4월 20일 (화) 23:55
새 문서: == 개요 == view에서 탬플릿을 호출한 후 변수들을 처리하는데, 이 변수들을 넣을 공간을 태그로 표시하여 처리한다. 파이썬 문법과 다른,...
== 개요 ==
view에서 탬플릿을 호출한 후 변수들을 처리하는데, 이 변수들을 넣을 공간을 태그로 표시하여 처리한다.

파이썬 문법과 다른, 변수들을 처리하기 위해 탬플릿 내에서만 사용되는 문법이다.

=각종 데이터 불러오기=

== 객체, 변수 불러오기 ==
{| class="wikitable"
!태그
!기능
!응용
|-
|<nowiki>{{변수}}</nowiki>
<nowiki>{{객체}}</nowiki>
|변수를 사용할 수 있다.(객체를 출력한다.)
정의가 되어있지 않은 경우, 빈 문자열이 된다. 빈 문자열은 settings.py에서 TEMPLATE_STRING_IF_INVALID 속성을 지정해주면 된다.(기본 빈문자열)
|
|-
|<nowiki>{{객체.속성}}</nowiki>
|변수처럼 사용한다. '.'문법으로 하위속성에 접근할 수 있다.
하위변수에 접근할 땐 '.'을 쓴다. <code>변수.종속</code> 형태로 쓴다.

다음의 순서로 확인하여 하위값을 반환한다.

1. 사전인가?

2. 속성을 포함했는가?(객체(모델)의 속성을 보여준다.)

3. 리스트인가?

정의되어있지 않은 변수의 경우, 빈 문자열을 반환한다. 이 문자열을 변경하려면 settings.py에서 TEMPLATE_TRINGS_IF... 이걸 지정해주면 된다.
|
|-
|<nowiki>{{변수:필터}}</nowiki>
|파이프문자를 사용하여 함수처럼 작용한다.(굳이..여기에서 함수처럼 쓰기보단, view에서 다루고 처리한 후 변수로 넣는 게 좋아보인다.)
|
|}

== 모델 불러오기 ==

===하위객체===
모델들이 서로 연결되어 있을 때. 예컨대, question이라는 모델 아래에 answer이라는 모델이 연결되어 있다면, question을 템플릿에서 받은 후, 하위 모델에 접근할 수 있다.

<nowiki>{{question.하위모델_set.all}}</nowiki> 형태로 하위모델을 모두 불러올 수 있다.[답변달기 기능에 추가하면 좋을듯]
===상위객체===
반대로 상위객체를 불러오는 것도 가능하다. 예컨대, Question 모델에서 <code>author = models.ForeignKey(User, on_delete=models.PROTECT)</code> 형태가 되었다면 뷰나 탬플릿에서 <code>question.author.username</code> 따위로 상위객체의 속성을 가져올 수 있다.

== url 불러오기 ==
{| class="wikitable"
!태그
!기능
|-
|{% url 인덱스 %}
|하드코딩 대신 인덱스를 쓰기 위한 태그. urls.py의 path에서 name속성에 기입한 인덱스 주소를 불러온다.
앱 이름을 지정했다면 {% url 앱이름:인덱스 %} 형태로 쓰인다.

변수를 보낼 수도 있어 <code>{% url 앱이름:인덱스 변수명 변수명2 %}</code> 형태로도 가능하다.
|}
==정적 파일 불러오기==
{| class="wikitable"
!태그
!기능
|-
|{% static '파일이름' %}
|정적 파일을 불러올 때 사용하는 태그이다.
href나 src 따위의 경로에 이 태그를 사용하면 알아서 찾아와 대입해준다.
|}

= 조건문 =

===분기문===
{| class="wikitable"
!태그
!기능
|-
|{% if 객체 %}
{% endif %}
|객체가 있는지 확인, 있으면 endif 사이의 문장을 보여준다.
ex) {% if question_list %} 는 question_list가 있을 때 하위의 명령을 실행하라는 의미.


{% if 객체>0 and 객체<=10 %} 형태의 사용도 가능하다.
|-
|{% if 조건문1 %}
{% elif 조건문2 %}

{% else %}

{% endif %}
|조건에 해당하는 부분 사이의 문장을 보여준다.
|}
===반복문===
{| class="wikitable"
!태그
!기능
|-
|{% for 변수 in 리스트 %}
{% endfor %}
|파이썬의 문법과 다를 건 거의 없다.
사용할 수 있는 불린연산자는 다음과 같다. <code>and, or, not, and not, ==, !=, <, >, <=, >=, in, not in</code>
|-
|{% if not forloop.last %}
|for문의 마지막인지 아닌지 여부를 담는 변수 등이 있다.
(세거나 그런 것들이...)
|}

== 기타 ==

===보안관련===
{| class="wikitable"
!태그
!기능
|-
|{% csrf_token %}
|CSRF를 공격을 막기 위한 수단.(서버로 들어온 요청이 사이트 내부에서 온 게 맞는지 확인하기 위한 용도)
form태그 바로 아래에 사용한다.
|}
[[분류:장고 탬플릿]]