티스토리 뷰
Stack Overflow에 자주 검색, 등록되는 문제들과 제가 개발 중 찾아 본 문제들 중에서 나중에도 찾아 볼 것 같은 문제들을 정리하고 있습니다.
Stack Overflow에서 가장 먼저 확인하게 되는 가장 높은 점수를 받은 Solution과 현 시점에 도움이 될 수 있는 가장 최근에 업데이트(최소 점수 확보)된 Solution을 각각 정리하였습니다.
아래 word cloud를 통해 이번 포스팅의 주요 키워드를 미리 확인하세요.
Django template how to look up a dictionary value with a variable
Django 템플릿에서 변수를 사용하여 딕셔너리 값을 찾는 방법
문제 내용
mydict = {"key1":"value1", "key2":"value2"}
The regular way to lookup a dictionary value in a Django template is {{ mydict.key1 }}
, {{ mydict.key2 }}
. What if the key is a loop variable? ie:
Django 템플릿에서 딕셔너리 값을 찾는 일반적인 방법은 `{{ mydict.key1 }}, {{ mydict.key2 }}`와 같이 사용하는 것입니다. 그렇다면 만약 키가 루프 변수라면 어떻게 해야 할까요? 예를 들어:
{% for item in list %} # where item has an attribute NAME
{{ mydict.item.NAME }} # I want to look up mydict[item.NAME]
{% endfor %}
mydict.item.NAME
fails. How to fix this?
mydict.item.NAME가 작동하지 않습니다. 이를 어떻게 고칠 수 있을까요?
높은 점수를 받은 Solution
Write a custom template filter:
커스텀 템플릿 필터를 작성하세요.
from django.template.defaulttags import register
...
@register.filter
def get_item(dictionary, key):
return dictionary.get(key)
(I use .get
so that if the key is absent, it returns none. If you do dictionary[key]
it will raise a KeyError
then.)
(저는 키가 없을 경우에는 None이 반환되도록 .get을 사용합니다. dictionary[key]를 사용하면 KeyError가 발생합니다.)
usage:
사용 방법:
{{ mydict|get_item:item.NAME }}
가장 최근 달린 Solution
Environment: Django 2.2
환경: Django 2.2
- Example code:
예시 코드:
# coding=utf-8
from django.template.base import Library
register = Library()
@register.filter
def get_item(dictionary, key):
return dictionary.get(key)
I put this code in a file named template_filters.py in my project folder named portfoliomgr
저는 'template\_filters.py' 파일을 'portfoliomgr'이라는 프로젝트 폴더에 넣었습니다.
- No matter where you put your filter code, make sure you have __init__.py in that folder
- Add that file to libraries section in templates section in your projectfolder/settings.py file. For me, it is portfoliomgr/settings.py
2. 필터 코드를 어디에 두느냐에 상관없이 해당 폴더에 **init**.py 파일이 있어야 합니다. 그
3. 파일을 프로젝트 폴더의 settings.py 파일에서 템플릿 섹션 라이브러리 섹션에 추가하세요. 저는 portfoliomgr/settings.py 입니다.
{{ mydict|get_item:item.NAME }}
{% load template_filters %}
출처 : https://stackoverflow.com/questions/8000022/django-template-how-to-look-up-a-dictionary-value-with-a-variable
'개발 > 파이썬' 카테고리의 다른 글
'ImproperlyConfigured: The SECRET_KEY setting must not be empty' 오류 수정하기 (0) | 2023.03.02 |
---|---|
FileNotFoundError: [Errno 2] 수정하기 (0) | 2023.03.02 |
파이썬에서 여러 파일 복사하기 (0) | 2023.03.01 |
Python에서 dictionary의 고유한 키(key) 개수 세는 방법 (0) | 2023.03.01 |
sklearn에서 import 오류 수정하기 (0) | 2023.03.01 |