2017-10-18 7 views
0

firstofas과 함께 사용하여 목록 데이터 형식이 구조를 유지하지 못하는 것을 확인했습니다. 예를 들어 :목록 변수를 사용한 첫 번째 사용

{% firstof some_list some_string as value %} 

some_list 위의 유효한 목록 인 경우는 value에 할당됩니다. 그러나 내가 {% if pk in value %}과 같은 것을하면, 심지어 성공할 때도 실패합니다. {% if pk in some_list %}. 내가 그들 모두를 인쇄 할 때 :

{{some_list}} 
{{value}} 

그들은 동일한 출력을 제공하지만 목록 아마 as으로 firstof 사용 후 목록으로 저장되지 않습니다 생각합니다. 생각?

답변

1

some_list에서 value으로 지정하는 것은 예상대로 작동하지 않습니다. 결과적으로 valueSafeText이 아니고 list이 아닙니다. 이는 this answer을 사용하여 검사 할 수 있습니다. get_type 사용자 지정 템플릿 태그를 추가하여 변수 유형을 가져옵니다.

{% firstof some_list as value %} 
{{ some_list|get_type }} 
{{ value|get_type }} 

다음을 보여줍니다

<class 'list'> 
<class 'django.utils.safestring.SafeText'> 

documentation 보면 가까이는 상태 firstof이 :

출력 거짓없는 첫 번째 인수의 변수입니다. 그 예는 {% firstof some_list some_string %}이되고 있음을 보여주는

:

{% if some_list %} 
    {{ some_list }} 
{% elif some_string %} 
    {{ some_string }} 
{% endif %} 

valueSafeText 타입의 이유가 설명합니다. 할당은 단순히 변수 value에 할당합니다. 이것은 나에게 버그로 보이지 않습니다.

+0

설명해 주셔서 감사합니다. 이것이 의도 된 행동인지 또는 버그인지 아십니까? – Anupam

+0

더 나은 문서를 읽고 답변을 업데이트했습니다. – ikkuh

+0

흠, 확실하지 않습니다. 출력에 변수를 할당하면 변수에 할당 할 값의 유형이 있어야합니다 (그렇지 않으면 할당이 많이 사용되지 않을 것입니다). – Anupam