바뀜

518 바이트 추가됨 ,  2022년 11월 18일 (금) 11:31
편집 요약 없음
23번째 줄: 23번째 줄:  
|-
 
|-
 
|<code><nowiki>|safe</nowiki></code>
 
|<code><nowiki>|safe</nowiki></code>
|XSS를 막기 위해 HTML에서 쓰이는 문자들은 자동으로 이스케이프 처리한다.
+
|view에서 텍스트 데이터를 가공해 보내면 html 안에서 "내용" 형식으로 담긴다.
 +
XSS를 막기 위해 HTML에서 쓰이는 문자들을 자동으로 이스케이프 처리하는 것이다.
 
하지만, HTML태그를 그대로 사용해야 할 때가 있는데, safe필터를 사용하여 해당부분의 제한만 풀거나 {%autoescape%}태그를 사용하여 {%endautoescape%} 사이의 이스케이프를 방지한다.
 
하지만, HTML태그를 그대로 사용해야 할 때가 있는데, safe필터를 사용하여 해당부분의 제한만 풀거나 {%autoescape%}태그를 사용하여 {%endautoescape%} 사이의 이스케이프를 방지한다.
 
|-
 
|-
49번째 줄: 50번째 줄:  
|<nowiki>|truncatechars:숫자</nowiki>
 
|<nowiki>|truncatechars:숫자</nowiki>
 
|제목이 길어질 때 특정 숫자의 글자만 나타내고 싶을 때 사용한다.
 
|제목이 길어질 때 특정 숫자의 글자만 나타내고 싶을 때 사용한다.
 +
잘린 부분이 있을 때 '...'으로 나타낸다.
 
|-
 
|-
 
|<nowiki>|truncatewords:숫자</nowiki>
 
|<nowiki>|truncatewords:숫자</nowiki>
55번째 줄: 57번째 줄:  
|<nowiki>|linebreaks</nowiki>
 
|<nowiki>|linebreaks</nowiki>
 
|마크다운을 사용하지 않고 줄바꿈만 반영하고 싶을 때.
 
|마크다운을 사용하지 않고 줄바꿈만 반영하고 싶을 때.
 +
|-
 +
|<nowiki>|slice</nowiki>
 +
|truncatechars 값이 2일 때 1글자만 나타내고 '...'으로 정리해버린다.
 +
 +
2글자 다 나타내고 싶을 땐 slice를 사용하는 게 좋다.
 +
 +
다음처럼 사용하기도 한다. <code><nowiki>{{값|slice:2}}</nowiki>{% if 값|length > 2 %}...{% endif %}</code>
 
|}
 
|}
 
= 커스텀 필터 만들기 =
 
= 커스텀 필터 만들기 =
73번째 줄: 82번째 줄:       −
@register.filter
+
@register.filter()
 
def sub(value, arg):
 
def sub(value, arg):
 
     return value - arg
 
     return value - arg
98번째 줄: 107번째 줄:  
* 앱 안에 <code>templatetags</code> 디렉터리를 만든다.
 
* 앱 안에 <code>templatetags</code> 디렉터리를 만든다.
 
* 이 디렉터리 안에 <code>custom_tags.py</code>를 만든다.(이름은 짓기 나름)
 
* 이 디렉터리 안에 <code>custom_tags.py</code>를 만든다.(이름은 짓기 나름)
 +
* @register 안의 경로는, 해당 필터를 구현할 html 경로를 지정한다.
 
|<syntaxhighlight lang="python">
 
|<syntaxhighlight lang="python">
 
from django import template
 
from django import template
113번째 줄: 123번째 줄:  
|탬플릿 안에서 필터를 불러온 후 사용한다.
 
|탬플릿 안에서 필터를 불러온 후 사용한다.
   −
 
+
* custom_tags는 필터를 저장한 파일명이다.
하고 나면 탬플릿 파일이 없다는 에러가 뜰텐데, 적절히 만들어주면 끝.
   
|<syntaxhighlight lang="html+django">
 
|<syntaxhighlight lang="html+django">
 
{% load custom_tags %}
 
{% load custom_tags %}