goodthings4me.tistory.com
[django] 파이썬 Django(장고) 템플릿 문법
Django(장고)의 템플릿시스템은 템플릿코드를 해석해서 템플릿 파일을 만드는데, 이 과정을 렌더링이라고 하며, 결과물인 템플릿 파일은 HTML, XML, JSON 등의 텍스트 파일이다.
■ 템플릿 변수
- 사용 형식 : {{ variable }}
- 변수명은 일반 프로그래밍처럼 문자, 숫자, 밑줄(_) 사용하여 정의
- 변수 속성 접근도 도트(.)표현식으로 가능
■ 템플릿 필터
- 필터는 파이프(|) 문자 사용
- 장고는 약 60여가지 필터를 제공하고 있으며, 사용자 정의 필터도 만들 수 있다.
{{ name|lower}} # name 변수값의 문자를 소문자로 변경
{{ text|escape|linebreaks }} # (필터 체인 가능) text 변수값 중 특수문자를 이스케이프하고,
그 결과 스트링에 <p>태그 적용
{{ bio|truncatewords:30 }} # (인자있는 필터) bio 변수값 중 앞에서 30개 단어만 보여주고,
줄바꿈 문자는 모두 없애줌
{{ list|join:" // " }} # list 변수값에 join 적용, 필터 인자의 빈칸은 따옴표로 묶어줌
list가 ['a', 'b', 'c']인 경우, "a // b // c"
{{ value|default:"nothing" }} # value 변수값이 False이거나 없는 경우, "nothing"으로 보여줌
{{ value|length }} # value 변수값의 길이 반환(스트링이거나 리스트인 경우도 가능)
{{ value|striptags }} # value 변수값에서 HTML tag 없애줌
{{ value|pluralize }} # 복수 접미사 필터, value 변수값이 1이 아니면 복수 접미사 s 붙임
다른 복수 접미사 es, ies는 필터에 인자를 사용함
{{ value|pluralize:"es" }} 또는 {{ value|pluralize:"ies" }}
{{ value|add:2 }} # 더하기 필터, value 변수값이 4이면, 결과는 6
* 정수가 아닌 경우, 더하기를 시도하고, 실패하면 빈 문자열 반환
■ 템플릿 태그
- 텍스트 결과물을 만들기도 하고, 템플릿 로직 제어, 외부 파일을 템플릿 내 로딩 등의 기능
- 사용형식 : {% tag %} # 시작태그와 끝태그가 있는 태그 있음
{% for %} {% endfor %}
리스트에 담겨 있는 항목을 순회하면서 출력 가능
<ul>
{% for athlete in athlete_list %}
<li>{{ athlete.name }}</li>
{% endfor %}
</ul>
※ {% for %} 태그 loop 사용할 수 있는 변수
forloop.counter | 현재까지 루프를 실행한 loop counter(1부터 카운트함) |
forloop.counter0 | 현재까지 루프를 실행한 loop counter(0부터 카운트함) |
forloop.recounter | loop 끝에서 현재가 몇 번째인지 카운트한 숫자(1부터 카운트함) |
forloop.recounter0 | loop 끝에서 현재가 몇 번째인지 카운트한 숫자(0부터 카운트함) |
forloop.first | loop에서 첫 번째 실행이면 True 값 가짐 |
forloop.last | loop에서 마지막 실행이면 True 값 가짐 |
forloop.parentloop | 중첩된 루프에서 현재의 루프 바로 상위의 루프를 의미함 |
{% if %} {% endif %}
- 변수를 평가하여 True이면 바로 아래 문장 실행
- 중첩if문 {% if %} {% elif %} {% else %} {% endif %} 가능
- {% if %} 태그에 필터와 연산자 사용 가능
- 주의할 점은, 필터가 스트링을 반환 시 산술연산 안됨 (단, length 필터는 가능)
- and, or, not, and not, >, >=, <. <=, ==, !=, in, not in 연산도 가능
{% csrf_token %}
- CSRF 공격 방지 위한 태그이며, 장고는 내부적으로 CSRF 토큰값의 유효성을 검증함
- <form> 태그 바로 첫 줄에 넣어줌
{% url %}
- html 소스에 URL 하드코딩하는 것을 방지하기 위함
- 사용 형식 {% url 'namespace:view-name' arg1 arg2 %}
※ namespace는 include() 함수 또는 app_name 변수에 정의한 이름 공간의 이름
{% with %}
with ~ endtith 내에서 특정 값을 변수에 저장해두는 기능
{% with total = business.employees.conut %}
{{ total }} people works at business
{% endwith %}
{% load %}
- 필터 및 사용자 정의 태그를 로딩해줌
# 템플릿 주석
- {# #} # 한 문장의 전부 또는 일부 주석 처리
- {% comment %} # 여러 줄 주석문
# XSS 공격 방지 위한 자동 이스케이프 기능
- > (less than) <
- < (greater than) >
- ' (single quote) '
- " (double quote) "
- & (ampersand) &
※ 자동 이스케이프 기능 비활성화 필요 시
safe 필터 사용 {{dat|safe }}
autoescape 태그 사용 {% autoescape off %}
# 템플릿 상속
- 상속하는 부모 템플릿에서는 {% block %} {% endblock %} 태그 사용
- 상속 받는 자식 템플릿에서는 {% extends %} 태그를 상단에 표시
[참고] Django로 배우는 쉽고 빠른 웹개발 파이썬 웹프로그래밍
블로그 인기글
[엑셀] 근무연수 및 근무 개월수 계산하는 함수
직장을 다니다 보면 몇 년 몇 개월 또는 전체 며칠을 다니고 있는지 궁금할 때가 있다. 아니면, 총무나 인사 일을 할 때 직원들의 근속연수 또는 근속개월수 등을 계산하고 싶을 때도 있다. 이런 경우 엑셀 함수를 활용하면 어떨까!! 근무연수 및 근무 개월수 계산 함수 알아보기 엑셀에서 근무연수 또는 근무 개월수 계산하는 것은 datedif() 함수를 사용하면 간단하게 해결할 수 있다. 아래 이미지를 보면서 설명하면, 셀 E1에 기준일자를 입력하고, 근무연수를 구할 때는 =datedif(B3,$E$1,"Y")&"년" 을 입력한다. 근무개월수는 =datedif(B3,$E$1,"M")&"개월" 처럼 입력한다. 일수까지 파악할 때문 별로 없지만, 심심풀이로 구해보고 싶을 때 =datedif(B3,$E$1,"D")..
goodthings4me.tistory.com
Windows 10 탐색기 느려지는 증상과 해결하는 방법
잘 작동하던 Windows 10 탐색기가 갑자기 느려지는 증상이 발생했을 때 어떻게 조치를 하는지 구글에서 찾아보니 많은 해결책들이 있었으나 어떤 것이 정확한 해결책인지는 알 수가 없었다. 그래서 해결방법이라고 제시한 것들을 정리해 보았다. 윈도우 탐색기가 느려지는 증상 해결 방법 어느 순간부터 응용프로그램(VS Code 등)에서 폴더 열기나 파일 불러오기를 했을 때 검색 팝업창이 안 뜨거나 열리는 시간이 엄청 느려지는 증상과, 더불어서 탐색기도 실행이 많이 느려지는 증상이 있었다. 기존에 사용하던 VS Code에 openpyxl 설치 후 실행이 느려지는 증상이 발생하더니 윈도우10 탐색기도 느려져서 사용할 수가 없었다. 노트북에 OS(Windows10)를 설치한지 1년이 다 되어가긴 했지만, 1개월 전..
goodthings4me.tistory.com
[국세청] 현금영수증가맹점으로 가입바랍니다. 메시지 해결방법(개인사업자)
▶ 현금영수증 가맹점 가입 메시지를 받고... 온라인 쇼핑몰 사업을 시작하려고 사업자등록증을 발급받고 난 후 얼마 안 있어서 국세청으로부터 어느 시점까지 '현금영수증 가맹점'으로 가입하라는 문자메시지가 받았었다. 그 메시지 기한이 오늘 도래했는데, 인터넷에서 찾아보니 홈택스에서 현금영수증 발급 사업자 신청을 할 수가 있었다. [관련내용] 홈>국세정책/제도>전자(세금)계산서/현금영수증/신용카드>현금영수증∙신용카드>가맹점가입 ▶ 홈택스 사이트에서 신청하는 절차는 다음과 같다. 우선, 홈택스에 로그인을 해야 합니다. 세상이 좋아져서 공인인증서 없이도 손쉽게 간편인증 로그인이 가능하다. 여러 인증방법 중 카카오톡 인증이 가장 편리한 거 같다. 간편인증 로그인 후 상단 '조회/발급' 탭 클릭 후 '현금영수증>현금..
goodthings4me.tistory.com
'코딩 연습 > 코딩배우기' 카테고리의 다른 글
[python] 파이썬으로 비밀번호 유효성 검사하는 코딩하기 (0) | 2020.09.24 |
---|---|
[python] 파이썬 datetime() 함수로 살아온 연월일 계산하기(코딩 연습) (0) | 2020.09.23 |
[python] 파이썬 스페셜 메소드 (Special Method) 사용 예제 (0) | 2020.09.22 |
[python] 파이썬 재귀함수, 람다 함수 연습 (0) | 2020.09.21 |
[python] 파이썬 datetime(), time(), localtime() (0) | 2020.09.20 |
댓글