[PYTHON] Django 템플릿에서 변수를 사용하여 dict에 액세스하고 있습니까?
PYTHONDjango 템플릿에서 변수를 사용하여 dict에 액세스하고 있습니까?
내보기 코드는 기본적으로 다음과 같습니다.
context = Context()
context['my_dict'] = {'a': 4, 'b': 8, 'c': 15, 'd': 16, 'e': 23, 'f': 42 }
context['my_list'] = ['d', 'f', 'e', 'b', 'c', 'a']
그리고 장고 템플릿에서 무엇을하고 싶습니까 :
<ul>
{% for item in my_list %}
<li>{{ item }} : {{ my_dict.item }}</li>
{% endfor %}
</ul>
그리고 나는 이것을 출력하고 싶다 :
<ul>
<li> d : 16 </li>
<li> f : 42 </li>
<li> e : 23 </li>
<li> b : 8 </li>
<li> c : 15 </li>
<li> a : 4 </li>
</ul>
그러나 {{my_dict.item}}을 통한 변수 이름에 의한 dict에 대한 참조는 실제로 작동하지 않습니다. 나는 내부적으로 my_dict [item] 대신 my_dict [ 'item']을 사용하고 있다고 생각합니다. 이 문제를 해결할 수있는 방법이 있습니까?
해결법
-
==============================
1.내장 된 방법이 없기 때문에 간단한 템플릿 필터를 써야합니다 : http://code.djangoproject.com/ticket/3371
내장 된 방법이 없기 때문에 간단한 템플릿 필터를 써야합니다 : http://code.djangoproject.com/ticket/3371
-
==============================
2.제안 된 답변의 사용 사례입니다.
제안 된 답변의 사용 사례입니다.
이 예제에서는 뷰에서 표 형식의 데이터를 출력하기위한 일반 템플릿을 만들었습니다. 컨텍스트 [ "columnMeta"]에서 열에 대한 메타 데이터가 보관됩니다.
이것은 사전이기 때문에 키를 순서대로 출력 할 수는 없으므로 이에 대한 별도의 목록에 키가 있습니다.
내 view.py :
c["columns"] = ["full_name","age"] c["columnMeta"] = {"age":{},"full_name":{"label":"name"}}
내 templatetags 파일에서 :
@register.filter def getitem ( item, string ): return item.get(string,'')
내 템플릿 :
<tr> <!-- iterate columns in order specified --> {% for key in columns %} <th> <span class="column-title"> <!-- look label in meta dict. If not found, use the column key --> {{columnMeta|getitem:key|getitem:"label"|default:key}} </span> </th> {% endfor %}</tr>
-
==============================
3.사전의 키와 값을 표시하려면 다음과 같이하십시오.
사전의 키와 값을 표시하려면 다음과 같이하십시오.
{% for key, value in your_dict.items %} {{ key }}: {{ value }} {% endfor %}
https://docs.djangoproject.com/en/dev/ref/templates/builtins/#for
-
==============================
4.필자의 필요에 따라 dicts, 목록 및 튜플에 사용할 수있는 단일 템플릿 필터가 필요했습니다. 그래서, 여기 제가 사용하는 것이 있습니다 :
필자의 필요에 따라 dicts, 목록 및 튜플에 사용할 수있는 단일 템플릿 필터가 필요했습니다. 그래서, 여기 제가 사용하는 것이 있습니다 :
@register.filter def get_item(container, key): if type(container) is dict: return container.get(key) elif type(container) in (list, tuple): return container[key] if len(container) > key else None return None
from https://stackoverflow.com/questions/2067006/accessing-a-dict-by-variable-in-django-templates by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] urllib.open을 사용할 때의 파이썬 오류 (0) | 2018.11.21 |
---|---|
[PYTHON] Pika의 대기열 크기 가져 오기 (AMQP Python) (0) | 2018.11.21 |
[PYTHON] 여러 확장과 함께 endswith 사용 (0) | 2018.11.21 |
[PYTHON] 변수가 이미 정의 된 후에 변수를 변경하는 방법은 무엇입니까? (0) | 2018.11.21 |
[PYTHON] UnboundLocalError가 발생하는 이유를 이해하지 못함 [중복] (0) | 2018.11.21 |