2017-02-01 3 views
0

EDIT:forループを簡略化して問題を簡単に説明できるようにしましたが、問題は同じです。Pythonフラスコjinja2テンプレート変数のコンテキスト。変数をレンダリングできません

私は画像名のリストから画像のカルーセルをレンダリングするためにフラスコのjinja2テンプレートをレンダリングしようとしています。画像の変数は私のデバッガに表示されているので、私はそれを介してループしているようだが、何らかの理由でレンダリングされていないようです。ここで

# flask app file 
@app.route('/results', methods=['POST', 'GET']) 
@login_required 
def newpage(page=1): 
    """ 
    Renders search page 
    """ 
    form = genus_form() 
    user = current_user 
    if request.method == 'POST': 
     if form.validate_on_submit(): 
      gen = Genus.query.filter(Genus.genus_name.like(form.genus.data)).first() 
      spec = Species.query.filter_by(GID=gen.GID).first() 
      images = Images.query.filter_by(UID=spec.UID).all() 
      if images: 
       images = [i.FileName for i in images] 
      form.genus.data = '' 
      render_template('results.html', form=form, images=images) 
     else: 
      return render_template('results.html', form=form) 
    return render_template('results.html', form=form) 

は神社テンプレートから該当するセクションです:

{% extends 'base.html' %} 
{% block title %} WCTC Image Review {% endblock %} 
{% block scripts %} 
    {{ super() }} 
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script> 
<script> 

$(document).ready(function() { 

    $("#genus").autocomplete({ 
     delay: 100, 
     source: function (request, response) { 

      // Suggest URL 
      var suggestURL = "{{ url_for('autocomplete') }}?term=%QUERY"; 
      suggestURL = suggestURL.replace('%QUERY', request.term); 

      // JSON Request 
      $.ajax({ 
       method: 'GET', 
       dataType: 'json', 
       jsonCallback: 'jsonCallback', 
       url: suggestURL 
      }) 
      .success(function(data){ 
       response(data); 
      }); 
     } 
    }); 
}); 

$('#myCarousel').carousel({ 
    interval: 40000 
}); 

$('.carousel .item').each(function(){ 
    var next = $(this).next(); 
    if (!next.length) { 
    next = $(this).siblings(':first'); 
    } 
    next.children(':first-child').clone().appendTo($(this)); 

    if (next.next().length>0) { 
     next.next().children(':first-child').clone().appendTo($(this)).addClass('rightest'); 

    } 
    else { 
     $(this).siblings(':first').children(':first-child').clone().appendTo($(this)); 

    } 
}); 

</script> 
{% endblock %} 
{% block content %} 

<div> 
    <form action="/results" method="POST" id="search"> 
     <fieldset> 
      <div> 
       {{ form.genus(placeholder="Genus") }} 
      </div> 
      <div> 
       <button type="submit" class="btn btn-default">Submit</button> 
      </div> 
     </fieldset> 
    </form> 
</div> 
{% if images %} 
       {% for filename in images %} 
         <div> 
          {{ filename }} 
         </div> 
       {% endfor %} 
{% endif %} 
{% endblock %} 

任意の助けいただければ幸いです。

return render_template('results.html', form=form, images=images) 

を、テンプレートは次のようにする必要があります:

+0

をあなたは、あなたの完全なルート機能をしてください示してもらえますか? – MrLeeh

+0

フルルート機能を表示するように編集しました。 –

+0

私はそれをデバッガで処理してきましたが、私が期待したとおりに動作し、画像のリストを変数画像と画像変数がデバッガに表示されるようにテンプレートに渡しますが、 {%if images%}ブロック内のもの。 –

答えて

1

は、この行にreturnを追加

{% if images %} 
    {% for filename in images %} 
     <div> 
      <img src="{{ filename }}"> 
     </div> 
    {% endfor %} 
{% endif %} 
+0

ハ!それはいつも簡単なことではありません!本当にありがとう! –

+0

あなたは大歓迎です!私の答えを受け入れてください:) –

関連する問題