模板:
{%- set listkeys = ['degree', 'type', 'location'] %}
{%- for data in profile.get('education_details', []) %}
{%- set nbr = namespace(value=0) %}
{%- for k in listkeys %}
{%- if data.get(k, '') %}{%- set nbr.value = nbr.value + 1 %}{%- endif %}
{%- endfor %}
{%- for k in listkeys %}
{%- if data.get(k, '') %}
{%- set nbr.value = nbr.value - 1 %}
{%- if nbr.value > 0 %}
<span>{{data.get(k, '')}},</span>
{%- else %}
<span>{{data.get(k, '')}}</span>
{%- endif %}
{%- endif %}
{%- endfor %}
<br/>
{%- endfor %}
游戏测试:
education_details = [{"degree": "B.S.", "location":"aus","grade":"A"},
{"degree": "B.S."},
{"degree": "B.S.","grade":"A"},
{"degree": "B.S.", "type": "Full-type","grade":"A"},
{"type": "Full-type", "grade": "A"},
{"degree": "MCA", "type": "Full-type", "location":"aus","grade":"B"}]
结果:
<span>B.S.,</span>
<span>aus</span>
<br/>
<span>B.S.</span>
<br/>
<span>B.S.</span>
<br/>
<span>B.S.,</span>
<span>Full-type</span>
<br/>
<span>Full-type</span>
<br/>
<span>MCA,</span>
<span>Full-type,</span>
<span>aus</span>
<br/>
编辑
没有namespace的模板:
{%- set listkeys = ['degree', 'type', 'location'] %}
{%- for data in profile.get('education_details', []) %}
{%- set nbr = {'value': 0} %}
{%- for k in listkeys %}
{%- if data.get(k, '') %}{%- set _ = nbr.update({'value': nbr.value + 1}) %}{%- endif %}
{%- endfor %}
{%- for k in listkeys %}
{%- if data.get(k, '') %}
{%- set _ = nbr.update({'value': nbr.value - 1}) %}
{%- if nbr.value > 0 %}
<span>{{data.get(k, '')}},</span>
{%- else %}
<span>{{data.get(k, '')}}</span>
{%- endif %}
{%- endif %}
{%- endfor %}
<br/>
{%- endfor %}
你可以使用宏:
{%- macro inc(dct, key, inc=1) -%}
{%- if dct.update({key: dct[key] + inc}) %}{%- endif -%}
{%- endmacro -%}
{%- set listkeys = ['degree', 'type', 'location'] %}
{%- for data in profile.get('education_details', []) %}
{%- set nbr = {'value': 0} %}
{%- for k in listkeys %}
{%- if data.get(k, '') -%}{{ inc(nbr, 'value', 1) }}{%- endif %}
{%- endfor %}
{%- for k in listkeys %}
{%- if data.get(k, '') -%}
{{ inc(nbr, 'value', -1) }}
{%- if nbr.value > 0 %}
<span>{{data.get(k, '')}},</span>
{%- else %}
<span>{{data.get(k, '')}}</span>
{%- endif %}
{%- endif %}
{%- endfor %}
<br/>
{%- endfor %}