2016-11-17 2 views
0

私はpython/jinja2を学んでいます。私はそれを解決する方法がわからないという問題を発見しました。私はJinjaにデータのリストを渡しています。そのリストでテーブルを作成します。このテーブルはOKであり、正常に動作します。しかし、このリスト/テーブルの1つの属性をフォームに渡したいときは、リストの参照を失い、常にリストの最初の項目に関する情報を送信します。Python Jinja2 For Range

{% for value in listresult %} 
<tr> 
<td><center>{{ value.date }}</center></td> 
{% set ident = value._id%} 
<td>{{ident}}</td> 
<td> 
<form name="info_form" class="form-inline" action="/changetime1" method="post"> 
    <div id="enquirypopup" class="modal fade in" role="dialog"> 
     <div class="modal-dialog"> 
      <!-- Modal content--> 
      <div class="modal-content row"> 
       <div class="modal-header custom-modal-header"> 
        <h4 class="modal-title">{{ident}}</h4> 
       </div> 
      </div> 
     </div> 
    </div> 
</form> 
<button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#enquirypopup">Change</button> 
</td> 
{% endfor %} 

この時点でテーブルの作成は正しいです。 5行目では、テーブル内の各行の1つのID(異なるID)を出力します。しかし、私が同じ変数を印刷するように頼んだら、14行目では常にリストの最初の要素の "ident"を表示します。フォームを呼び出すと、リストにある要素の参照が失われるようです。

Result Table - Pop up

だから、私は(ボタン「変更」行20)をクリックしたリストの要素は重要ではありません、ポップアップに来るIDは常に最初の要素です。

答えて

0

問題はHTML要素IDにあります。同じID(#enquirypopup)のフォームを作成しているため、ブラウザはページの最初の要素、初めて#enquirypopup id *と表示されます。

迅速な回避策はそうのような神社ident変数にIDを設定することになります。

<div id="enquirypopup_{{ ident }}" class="modal fade in" role="dialog">...</div> 

<button type="button" class="btn..." data-toggle="modal" data-target="#enquirypopup_{{ ident }}">Change</button> 

しかし、異なるセレクタを使用して無数の他のソリューションがあります。


*これは、それがbad practice

だもう一つの理由標準化された動作ではありませんとブラウザ間で異なり、