catch_kwargs - 이 속성은 매크로가 추가 키워드 인수를 수락하는 경우(즉, 특별한 kwargs 변수에 액세스하는 경우) True임.
catch_varargs - 이 속성은 매크로가 추가 위치 인수를 수락하는 경우(즉, 특별한 varargs 변수에 액세스하는 경우) True임.
caller - 이 속성은 매크로가 특별한 caller 변수에 액세스하고 call 태그에서 호출될 수 있는 경우 True임.
5. 매크로 이름이 언더바(_)로 시작 시, 내보내기(expose)와 가져오기(import) 모두 할 수 없음. 즉, 언더바(_)로 시작하는 매크로는 외부에서 사용할 수 없음.
6. Jinja에서의 범위 작동 방식으로 인해, 하위 템플릿의 매크로는 상위 템플릿의 매크로를 재정의하지 않음. 다음은 child.txt 파일 렌더링 시, "CHILD"가 아닌 "LAYOUT"을 출력함.
layout.txt
{% macro foo() %}LAYOUT{% endmacro %}
{% block body %}{% endblock %}
child.txt
{% extends 'layout.txt' %}
{% macro foo() %}CHILD{% endmacro %}
{% block body %}{{ foo() }}{% endblock %}
PS. 위 코드해석 자세히 보기
위의 예제는 Jinja에서 매크로의 스코프 동작을 보여줌. 여기서는 "layout.txt"라는 부모 템플릿과 "child.txt"라는 자식 템플릿이 있음.
부모 템플릿 "layout.txt"에서는 "foo"라는 이름의 매크로가 정의되어 있고, 이 매크로는 "LAYOUT"을 출력함. 자식 템플릿 "child.txt"에서는 같은 이름의 "foo" 매크로를 다시 정의하지만, 이번에는 "CHILD"를 출력함.
그러나 Jinja의 스코프 동작에 따라 자식 템플릿의 매크로가 부모 템플릿의 매크로를 재정의하더라도 부모 템플릿의 매크로가 덮어쓰이지 않음. 따라서 위의 예제에서 "child.txt"를 렌더링하면 "LAYOUT"이 출력됨. "CHILD"가 출력되는 것이 아니라는 것이 포인트임.
1. 채팅창 헤드에서 접속자 확인2. 닉네임 클릭해 1:1 채팅 가능 3. 닉네임 클릭해 귓속말 가능 4. 닉네임 클릭해 호출하기 가능 5. 우하단 클릭해 환경 설정 가능 6. 의뢰글 작성 후 의뢰 상담 가능 7. 질문글 작성 후 질문 상담 가능8. 채팅방에 개인정보 입력 금지9. 채팅방에 광고 욕설 비방 금지