우리는 많은 속성이 하이픈을 포함하는 명명 된 사용자 지정 데이터베이스에 구축 된 시스템, 즉이 이것에 대한 예외. 나는 이것을 극복하기 위해 밑줄을 사용하기 위해 모든 키 (및 서브 테이블 키)를 변환하지 않아야한다. 더 쉬운 방법이 있습니까?장고 템플릿에서 하이픈을 포함하는 사전 키에 어떻게 액세스합니까? 다음과 같이</p> <pre><code>user-name phone-number </code></pre> <p>이러한 속성은 템플릿에 액세스 할 수 없습니다 :</p> <pre><code>{{ user-name }} </code></pre> <p>장고가 발생
6
A
답변
8
개체를 재구성하지 않으려면 사용자 지정 서식 파일 태그가 여기에있는 유일한 방법 일 수 있습니다. 임의의 문자열 키로 사전에 액세스하려면 this question의 대답이 좋은 예입니다. 게으른 들어
: 당신과 같이 사용
이from django import template
register = template.Library()
@register.simple_tag
def dictKeyLookup(the_dict, key):
# Try to fetch from the dict, and if it's not found return an empty string.
return the_dict.get(key, '')
:
: 당신은 임의의 문자열 이름으로 객체의 속성에 액세스하려면{% dictKeyLookup your_dict_passed_into_context "phone-number" %}
, 다음을 사용할 수 있습니다
from django import template
register = template.Library()
@register.simple_tag
def attributeLookup(the_object, attribute_name):
# Try to fetch from the object, and if it's not found return None.
return getattr(the_object, attribute_name, None)
다음과 같이 사용하십시오.
,{% attributeLookup your_object_passed_into_context "phone-number" %}
는
당신은 ('__'같은) 하위 속성에 대한 문자열 구분자의 일종으로 올 수 있지만, 나는 OrderedDict 사전 유형은 대시 지원
3
1
:-) 숙제 떠날 것이다 : https://docs.python.org/2/library/collections.html#ordereddict-objects
을이것은 OrderedDict 구현의 부작용 인 것 같습니다. 아래의 키 값 쌍은 실제로 집합으로 전달됩니다. 나는 OrderedDict의 구현이이 문제를 해결하기 위해 실제 dict 키로 전달 된 "키"를 사용하지 않을 것이라고 생각합니다.
이것은 OrderedDict 구현의 부작용이므로 의존하고 싶은 것이 아닐 수 있습니다. 그러나 그것은 효과적이다.
from collections import OrderedDict
my_dict = OrderedDict([
('has-dash', 'has dash value'),
('no dash', 'no dash value')
])
print('has-dash: ' + my_dict['has-dash'])
print('no dash: ' + my_dict['no dash'])
결과 :
has-dash: has dash value
no dash: no dash value
관련 문제
- 1. github add <<<<<<< HEAD
- 2. Heredoc <<< 또는 <<?
- 3. Gemfile 구문 오류 : <<<<<<< localhost를 시작하려고 할 때 HEAD
- 4. 연산자 << : std :: cout << i << (i << 1);
- 5. << 셀프 블록
- 6. 인쇄 관련 질문 <<<
- 7. 연산자 오버로드 <<
- 8. Ruby attr_reader는 <<
- 9. PHP <<< OUT 및 OUT;
- 10. 인쇄 <<< PHP에서 HTML?
- 11. 무엇을 | << 평균?
- 12. Tortoise svn <<<<를 파일에 추가 중!
- 13. Asp.net : <% # 또는 <%
- 14. PHP에서 "<<< SQL"이란 무엇입니까?
- 15. 어떤 수단 <<< PHP에서
- 16. 가상 << operator
- 17. 맞춤 << 방법
- 18. EJS : <% = <% -
- 19. <? 및 <? php
- 20. PHP <<<는 무슨 뜻입니까?
- 21. <<< OUT은 PHP에서 무엇을 의미합니까?
- 22. <<< CON in PHP 사용
- 23. <? php와 <?
- 24. 연산자 << 과부하
- 25. 조작 << 상속
- 26. << - 상수는 무엇을합니까?
- 27. 연산자 << 오류
- 28. << 연산자 오류
- 29. 장고 <input><label>
- 30. <사전 <int, string>>
이 솔루션을 사용했지만 변경되었습니다. 태그에서 필터로. 감사합니다. – jthompson
이것은 확실히 작동하지만, dict을 값으로 포함하는 dict 내부에있는 키에 어떻게 액세스합니까? – Kim