템플릿 주석을 작성하는 방법은 2가지 방법이 있다.

1번째는 한줄 주석 2번째는 여러줄 주석

 

- 한줄 주석

{# Hello #}world
{# {% if foo %}bar {% else %} #} 

 

- 여러줄 주석

{% comment "note" %}
<p>Commented out text here</p>
{% endcomment %}

 

- HTML 이스케이프

템플릿 코드를 렌더링하여 HTML 텍스트를 만들 때, 템플릿 변수에 HTML 태그가 들어 있는 경우에 그대로 렌더링하면 원하는 결과가 나오지 않을 수 있다. 그리고 이점을 이용하여 XSS 공격이 이루어진다.

 

장고는 자동 이스케이프 기능을 제공하고 있다.

  • <  -> &lt;
  • >  -> &gt;
  • ' (single quote)  -> &#39;
  • " (double quote)  -> &quot;
  • &  -> &amp;

그렇기 때문에 자동 이스케이프 기능을 비활성화 할 수 있는 2가지 방법이 있다.

 

- safe 필더를 이용

This will not be escaped: {{ data|safe }}

safe 필터는 템플릿 변수에만 영향을 미친다.

 

- {% autoescape %} 태그를 이용

{% autoescape off %}
Hello {{ name }}
{% endautoescape %}

autoescape 태그 영역안에서는 자동 이스케이프 기능을 비활성화 한다.

추가적으로 필터의 인자에 사용되는 스프링 리터럴에는 자동 이스케이프 기능이 적용되지 않는다.

 

출처: 한빛미디어, Django로 배우는 쉽고 빠른 웹 개발 파이썬 웹 프로그래밍

'Django' 카테고리의 다른 글

14. 폼 클래스  (0) 2021.04.08
13. 템플릿 상속  (0) 2021.04.08
11. Template Tag(템플릿 태그)  (0) 2021.04.08
10. Template 구성 - 파일 구조, 템플릿 필터  (0) 2021.04.08
9. View 구성 - 함수형 뷰 구성  (0) 2021.04.08

+ Recent posts