2017-01-24 8 views
0
{% for repo in repo_info %} 

{% for branch in branch_info[forloop.counter] %} 
      <li>Branch Name --> {{ branch }}</li>   
{% endfor %} 

{% endfor %} 

branch_infoはリストのリストです。djangoテンプレートのリストのリストを解析するには?

また、リストされているリスト要素上で解析する方法はあり私にこの---> branch_info [forloop.counter]

に残りを解析できませんでしたエラーを与えますか?

+1

[mcve]を作成してください。 'branch_info'とは何ですか? djangoテンプレートの内部でPythonを使用することはできません – Sayse

+0

関連:[反復リストからのインデックスの使用](http://stackoverflow.com/q/25245985/1324033) – Sayse

+0

'repo_info' var内のコンテンツを共有できますか? –

答えて

0

あなたは無効なインデックスを使用する場合は例外をスローします要求されたインデックス

# some file named my_template_tags.py 
@register.simple_tag 
def at_index(data, index): 
    return data[index] 

これでデータを返す単純なtemplate tagを作成することができます。例外を必要としない場合は、それをキャッチして有効なデータを返す必要があります。

辞書と併用することもできますが、インデックスではなくキーを渡します。

{% load my_template_tags %} 

{% for repo in repo_info %} 

    {% for branch in branch_info|at_index:forloop.counter %} 
      <li>Branch Name --> {{ branch }}</li>   
    {% endfor %} 

{% endfor %} 
0

テンプレートコードがこのように乱雑になり始めるときは、ほとんどの場合、データに正しい構造がないことを意味します。この場合、repo_infobranch_infoが「並列シーケンス」になっているようです(branch_info[x]のデータはrepo_info[x]のレポ用です)。

きれいな解決策は、それはあなたがちょうどrepo.branchesを超える各レポ反復処理のためのオーバーrepo_info、その後繰り返すことができbranchの独自のリストです保持するrepoのためになります。あなたは簡単にこのようにデータを構造化することができない場合は、あなたのテンプレートで(repo, branches)タプルに繰り返すことができるように

は、別の解決策は、あなたのビューで一緒にzip(またはitertools.iziprepo_infobranch_infoにあります。

関連する問題