[PYTHON] Django 템플릿에서 키로 사전 접근하기
PYTHONDjango 템플릿에서 키로 사전 접근하기
내보기에서 템플릿으로 사전을 전달하고 있습니다. 그래서 { "key1": "value1", "key2": "value2"} 전달되고 키, 값 쌍을 통해 반복하지만 괜찮은 솔루션에서 특정 키의보기에 직접 액세스 할 수 없습니다. 예를 들어 bu json.items [ "key1"]와 같이 "key1"이라고 말하십시오. if / then 문을 사용할 수는 있지만 직접 처리하는 방법이 있습니까?
다음은 html 템플릿의 코드 루핑입니다.
{% for key, value in json.items %}
<li>{{key}} - {{value}}</li>
{% endfor %}
해결법
-
==============================
1.Django 템플릿 언어는 다음과 같이 사전 키를 찾는 것을 지원합니다 :
Django 템플릿 언어는 다음과 같이 사전 키를 찾는 것을 지원합니다 :
{{ json.key1 }}
변수 및 조회에 대한 템플릿 문서를 참조하십시오.
템플릿 언어는 key가 변수 인 json [key]를 표시하는 방법을 제공하지 않습니다. 이 스택 오버플로 질문에 대한 답변에서 제안하는 것처럼 템플릿 필터를 작성하여이 작업을 수행 할 수 있습니다.
-
==============================
2.이 문제를 극복하기 위해 다음과 같이 시도해 볼 수 있습니다.
이 문제를 극복하기 위해 다음과 같이 시도해 볼 수 있습니다.
def get_context_data(self, **kwargs): context['cart'] = [] cart = Cart() cart.name = book.name cart.author = book.author.name cart.publisher = book.publisher.name cart.price = 123 cart.discount = 12 cart.total = 100 context['cart'].append(cart) return context class Cart(object): """ Cart Template class This is a magic class, having attributes name, author, publisher, price, discount, total, image You can add other attributes on the fly """ pass By this way you can access your cart something like this: {% for item in cart %} <div class="jumbotron"> <div> <img src="{{item.image}}" /> <div class="book_name"> <b>{{item.name}}</b></div> <div class="book_by"><i>{{item.author}}</i></div> <span>Rs. {{item.price}}</span> <i>{{item.discount}}% OFF </i> <b>Rs. {{item.total}}</b> {% endfor %}
-
==============================
3.예를 들어, 아래의 사전을 보내려면 dict = { 'name': 'myname', 'number': 'mynumber'}
예를 들어, 아래의 사전을 보내려면 dict = { 'name': 'myname', 'number': 'mynumber'}
조회수 : 리턴 렌더 (request, self.template_name, { 'dict': dict})
html 템플릿의 값을 렌더링하려면 다음을 수행하십시오.
{{dict.name}}} p>
'myname'을 출력합니다.
-
==============================
4.@Alasdair에 따르면 템플릿 필터를 사용할 수 있습니다. templatetags 디렉토리에서 dict_key.py 파일을 만듭니다.
@Alasdair에 따르면 템플릿 필터를 사용할 수 있습니다. templatetags 디렉토리에서 dict_key.py 파일을 만듭니다.
from django.template.defaultfilters import register @register.filter(name='dict_key') def dict_key(d, k): '''Returns the given key from a dictionary.''' return d[k]
그런 다음 HTML에서 다음과 같이 작성할 수 있습니다.
{% for k in json.items %} <li>{{ k }} - {{ json.items|dict_key:k }}</li> {% endfor %}
from https://stackoverflow.com/questions/19745091/accessing-dictionary-by-key-in-django-template by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 모든 문자열이나 정규 표현식이 파일에 존재하는지 확인 (0) | 2018.11.24 |
---|---|
[PYTHON] h5py로 점진적으로 hdf5에 씁니다. (0) | 2018.11.24 |
[PYTHON] 파이썬 : 객체 속성 참조 메소드 호출 방법 (0) | 2018.11.23 |
[PYTHON] PySpark 데이터 프레임에 새로운 열로 열 합계를 추가하십시오. (0) | 2018.11.23 |
[PYTHON] 음수 0을 파이썬 문자열에서 양수로 0으로 포맷하는 방법은 무엇입니까? (0) | 2018.11.23 |