2016-09-19 5 views
-1

私の目標は、静的ファイル内のディレクトリを繰り返して、「動的」以外のすべての画像を表示することです。私は反復作業をしているだけで、私は私の写真を表示するために働くものの忍者面を得ることができません。フラスコとジンジャーでディレクトリを繰り返す

server.py

@app.route('/ninja') 
def ninja(): 
    for filename in os.listdir('static/images'): 
     if filename.endswith(".jpg") and filename != "notapril.jpg": 
      allninjas = (os.path.join('static/images', filename)) 
     else: 
      continue 
    return render_template('ninja.html', color=allninjas) 

ninja.html:

<body> 

    {% for item in navigation %} 
     <img src="{{ allninjas }}"/> 
    {% endfor %} 


    {% for filename in listdir %} 
    {% if filename %} 
     <img src="{{ allninjas }}"/> 
    {% endif %} 
    {% endfor %} 


    <img src="{{ color }}"/> 

</body> 

下のタグを自分のディレクトリ内の最後の忍者亀の絵が表示されます。私は他の忍者とループが動作するようにすることはできません。 今週は忍者を始めました。

+1

あなたはただ一つの経路を絶えず割り当てています。パスのリストを作成します。 – davidism

+0

@davidismありがとうございました。私はフィードバックをかけるとあなたは正しかった。リストが私が探していた解決策でした。 – BatsAuto

答えて

1

ここではいくつかのことが起こっています。あなたのPythonコードから始めましょう。 @davidismのようにリストを作成して、そのリストをテンプレートに渡す必要があります。このような何か...

@app.route('/ninja') 
def ninja(): 
    allninjas = [] 
    for filename in os.listdir('static/images'): 
     if filename.endswith(".jpg") and filename != "notapril.jpg": 
      allninjas.append(os.path.join('static/images', filename)) 
     else: 
      continue 
    return render_template('ninja.html', color=allninjas) 

は今、あなたのテンプレートは、あなたのPythonコードでallninjasと呼ばれるリストでそのcolor変数に割り当てられた何かを持っています。これは、あなたのループが機能していない理由です。何も変数に割り当てられていないので、colorだけです。

return render_template('ninja.html', allninjas=allninjas) 

そして、このように見えるためにあなたのテンプレートを変更します:あなたがしたいかもしれないもの

はこのように見てrender_templateにお電話を変更され

<body> 

{% for filename in allninjas %} 
    {% if filename %} # not sure you really need this line either 
     <img src="{{ filename }}"/> 
    {% endif %} 
{% endfor %} 

</body> 

私は多くのことを取り除きます。私はあなたが他の部分で何をしているのかは分かりませんが、なぜ私がそれらを取り出したのかを教えてくれます。まず、画像のソースがallninjasに設定されたimgタグを印刷する2つのループがあります。それぞれのループ変数は定義されていません。 navigationlistdirは、あなたのPythonコードからテンプレートに送られないので、テンプレートはそれらが何であるか分からず、それらをループすることはできません。

コードではcolorと定義されていますが、他には1つの画像しか表示されません。私はあなたが本当にこれらの他のすべての変数のために何をしようとしているのか分からないので、それ以上説明しない限り、私はそれを手伝うことができません。

あなたはこれらの変数のすべてを定義した場合、テンプレートの呼び出しは次のようになります。いずれの場合も

return render_template('ninja.html', navigation=navigation, 
            listdir=listdir, 
            allninjas=allninjas, 
            color=color) 

、などcolor=colorなどを、最初の部分、color=は自分の中で変数を参照していますテンプレート。あなたはテンプレートがその変数に割り当てるべきものを教えています。 2番目の部分(この場合はcolor)は、テンプレートに送信するPythonコードの変数です。したがって:

return render_template('templatename.html', template_variable=Python_variable) 

私は助けてくれることを望みます。

+1

うわー、私は本当にexplainationを飾る。以前はリストを作成しようとしていましたが、私はそうではありませんでした。append()をリストに追加すると、そこには何も追加されていないようです。私が言ったように、私は新しいです。私はあなたが私の質問に答える時間を取ったことにとても感謝しています。よかった。 – BatsAuto

関連する問題