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)
を、テンプレートは次のようにする必要があります:
をあなたは、あなたの完全なルート機能をしてください示してもらえますか? – MrLeeh
フルルート機能を表示するように編集しました。 –
私はそれをデバッガで処理してきましたが、私が期待したとおりに動作し、画像のリストを変数画像と画像変数がデバッガに表示されるようにテンプレートに渡しますが、 {%if images%}ブロック内のもの。 –