+ (더하기 연산자) - {{ 1 + 1 }}은 2이다. 숫자 경우엔 덧셈 연산하고, 둘 중 하나가 숫자 아니면 두 객체를 함께 추가함. 일반적으로 객체는 숫자이지만 둘 다 문자열이거나 List인 경우 이 방법으로 연결 가능함. 그러나, 문자열 연결 경우, 문자열연결연산자(~) 이용 권장.
** (승수 연산자) - {{ 2**3 }}는 8이다. [주의] Python과 달리 연결된 pow는 왼쪽에서 오른쪽으로 평가됨. {{ 3**3**3 }}는 Jinja에서는 (3**3)**3으로 평가되지만 Python에서는 3**(3**3)으로 평가됨. 원하는 순서를 명시하려면 Jinja에서 소괄호를 사용. 일반적으로 템플릿에서 수행하는 것보다 Python에서 확장된 수학을 수행하고 결과를 렌더링에 전달하는 것이 더 좋음. 향후, Python과 일치하도록 동작 방식이 변경될 수도 있음.
not 키워드 - 부정 (= 아니면) [참고] ① "is" 및 "in" 연산자는 중위표기법(= 연산자를 피연산자들 사이에 배치해 표기) 사용해 not 표기도 지원. (예) "not foo is bar"와 "not foo in bar" 대신에, "foo is not bar"와 "foo not in bar" 사용 가능. ② 그외 다른 모든 표현식은 접두사표기법으로 표기. (예) "not (foo and bar)".
(expr) 기호 - 표현식을 그룹화.
그외 연산자 (Other Operators)
※ 동일 범쥐에선 매우 유용하나, 다른 두 범주에선 적합 X.
in 키워드 - ① (시퀀스/매핑) 포함 검사 수행. ② 왼쪽 것이 오른쪽 것에 포함 시 true 반환. (예) {{ 1 in [1, 2, 3] }} 경우, true 반환.
인라인 if 표현식 사용하면 일부 상황에서 매우 유용. (예) layout_template 변수가 정의되어 있으면 layout_template 템플릿 상속하고, 그렇지 않으면 default.html 템플릿 상속 경우 표현식: {% extends layout_template if layout_template is defined else 'default.html' %}
일반 구문: <표현식이 참이면 수행할 일> if <표현식> else <표현식이 거짓이면 수행할 일>
else 부분은 선택적임. 제공되지 않으면 else 블록은 암묵적으로 무조건 Undefined 객체로 평가됨. (예) page.title 값 존재 시, page.title 값을 대괄호([])로 감싸기 표현식: {{ "[{}]".format(page.title) if page.title }}
[예제]
{% set page = namespace() %}
{% set page.title = "홈짱닷컴 Homzzang.com" %}
{{ "[{}]".format(page.title) if page.title }}
결과값: [Homzzang.com]
파이썬 메서드 (Python Methods)
각 변수의 데이터타입에 속하는 메서드이면 어떤 것이든 사용 가능. 메서드 호출 시 반환값이 표현식의 값으로 사용됨. (예) page.title 값이 문자열이고 문자열 타입에 속하는 capitalize() 메서드 호출 표현식: {{ page.title.capitalize() }}
이는 사용자 정의 타입에 대한 메서드에도 적용됨. (예) Foo 타입의 변수 f에 bar 메서드가 정의되어 있다면 표현식: {{ f.bar(value) }}
연산자 메서드도 예상대로 작동함. (예) %는 문자열에 대한 printf 스타일을 구현함. {{ "Hello, %s!" % name }}
그러나, % 연산자 대신 .format 메서드 사용 권장함. {{ "Hello, {}!".format(name) }}
1. 채팅창 헤드에서 접속자 확인2. 닉네임 클릭해 1:1 채팅 가능 3. 닉네임 클릭해 귓속말 가능 4. 닉네임 클릭해 호출하기 가능 5. 우하단 클릭해 환경 설정 가능 6. 의뢰글 작성 후 의뢰 상담 가능 7. 질문글 작성 후 질문 상담 가능8. 채팅방에 개인정보 입력 금지9. 채팅방에 광고 욕설 비방 금지