템플릿 상속에서 변수를 처리하는 방법
-
05-07-2019 - |
문제
하위 템플릿에서 Body Tag의 ID 속성을 정의하고 싶습니다. 첫 번째 솔루션은 완벽하게 작동합니다.
base.html :
[body{% block bodyid %}{% endblock %}]
child.html :
{% block bodyid %} id="myId"{% endblock %}
간단하고 시원합니다! 그러나 나는 모든 어린이 템플릿에서 id = "myid"를 가리키는 것을 좋아하지 않습니다. ID = "...."에 넣는 부모 템플릿에 값을 'myid'를 보내고 싶습니다. 그래서 나는이 방법을 발명했다 :
base.html :
[body{% block bodyid %} id={{ bodyid }}{% endblock %}]
child.html :
{% block bodyid %}
{% with 'myId' as bodyid %}
{{ block.super }}
{% endwith %}
{% endblock %}
그러나 첫 번째 솔루션을 비교하는 것은 끔찍하고 지루합니다. 이것을하는 좋은 방법이 있습니까?
이 문제는 차체를 관리하는 것보다 더 깊습니다. 표준 Django 템플릿의 상속을 통해 하위 템플릿 시스템을 찾고 구성하려고 노력합니다.
해결책
기본 템플릿에서 :
<body id="{% block bodyid %}{% endblock %}">
어린이 템플릿에서 :
{% block bodyid %}myId{% endblock %}
내가 당신의 질문을 올바르게 이해한다면, 이것은 당신이 원하는 것을 달성하기에 충분해야합니다. 실제 ID 만 보내십시오 (myId
) 기본 템플릿에.
다른 팁
귀하가 원하는 경우, 귀하의 코드를 통해이를 설정하십시오. 신분증이 컨텍스트 객체의 일부가되므로 하위 템플릿에 입력 할 필요가 없으며, 전화하는 뷰 만 있습니다.
그런 다음 기본 템플릿을 컨텍스트 객체에서 ID를 가져 오거나 템플릿 구문을 사용하도록 지시 할 수 있습니다.
<body id="{{ body_id }}">
물론 여기서 개인적인 취향은 템플릿과 뷰의 구조에 달려 있지만, 내가하는 방식입니다.
제휴하지 않습니다 StackOverflow