2017-01-05 2 views
0

フラスコアプリケーションをデプロイしようとしていますが、flask.render_template()メソッドをhtmlファイルのリストとともに渡したいとします。ここで私はそれが適格だと思う。 http://flask.pocoo.org/docs/0.12/api/#flask.render_templateflask.render_template()に複数のテンプレートを渡す方法

私はこのコード

from flask import Flask, render_template 
app = Flask(__name__) 
app.debug = True 

@app.route('/') 
def hello(): 
    templs = ["_header.html", "_footer.html"] 
    return render_template(templs) 

if __name__== '__main__': 
    app.run() 

にしようとしている。しかし、実際にサーバがリストから最初のテンプレートを返します。 リストからすべてのテンプレートをレンダリングするには、このリストを反復処理する方法はありますか?私の知る限り、あなたは、静的なヘッダとフッタをレンダリングしようとしている参照として

おかげで、 アレックス

+1

なぜ複数のテンプレートをレンダリングしたいですか?とにかくクライアントに返すことができます。 [documentation](http://flask.pocoo.org/docs/0.12/api/#flask.render_template)を見てください。render_templateは、リストの最初のテンプレートのみレンダリングします:* "template_name_or_list - テンプレートの名前レンダリングされるか、テンプレート名で繰り返し可能**既存のものがレンダリングされる** "* – MrLeeh

+0

私が持っているすべてのWebページに対してheader.htmlやfooter.htmlのような静的ファイル私のサイトに。彼らは私が必要とするすべてのスタイルシートとスクリプトのリンクを持っています。実際には、ヘッダー、フッター、本文の.htmlファイルを動的に連結(マージ)する必要があります。 PHPの場合と同様に、ファイルを順番にロードし、ブラウザは単一のページとしてレンダリングします。 –

答えて

2

。私が含まれるヘッダとfooteerで "layout.html" のようなsomethinkを準備するためにお勧めしたい:

//layout.html 
<html> 
    <head>//headhere</head> 
    <header>//your static header</header> 
    <main> 
     {% block body %} 
     //content will be here 
     {% endblock %} 
    </main> 
    <footer> //your static footer </footer> 
</html> 

その後、 "子" テンプレートで(例:index.htmlを)を使用します。

//index.html 
{% extends "layout.html" %} 
{% block body %} 
    //your code here 
{% endblock %} 

それがしますlayout.htmlからヘッダーとフッターをレンダリングし、index.htmlから残ります。

+0

ありがとうございます、私はそれが私が探しているものだと思います。 –

1

おそらく、複数のテンプレートをレンダリングする必要はありません。あなたが望むのは、複数のテンプレートを組み合わせた1つのテンプレートをレンダリングすることです。それはフラスコではなく、テンプレートエンジンの仕事です。 http://jinja.pocoo.org/docs/dev/templates/(FlaskはJinjaを使用しています)を参照してください。

関連する問題