2017-08-02 9 views
1

私はFlaskを初めて使用し、Jinja2を使用してレイアウトテンプレートを作成しようとしています。私もrender_template()を使用する場合には、正常に動作しますurl_forがjinja2テンプレート内で動作していない、 "定義されていない"エラーが発生しました

jinja2.exceptions.UndefinedError: 'url_for' is undefined 

<!DOCTYPE html> 
    <html lang="en"> 
    <head> 
     <meta charset="UTF-8"> 
     <link href="{{ url_for('static', filename='bundle/login.styles.css') }}" rel="stylesheet"> 
     <title>{{meta['title']}}</title> 
    </head> 
    <body> 
     <div class="app" id="app"> 
      {% block content %} 
      {% endblock %} 
     </div> 
     <script type="text/javascript" src="{{ url_for('static', filename='bundle/login.bundle.js') }}"></script> 
    </body> 
    </html> 

問題は、私はtemplate.render()を使用するときに私はエラーjinja2.exceptions.UndefinedErrorを取得しています。エラーは発生しません。私は何が間違っているのか分かりません。

また、また、テンプレートで使用できるグローバル変数にurl_for()機能を追加するの世話をするrender_template()これを使用する場合は、単にrender_template()

答えて

0

を使用して対テンプレートを生成するためにJinja2.Environmentjinga.get_template()を使用しての違いは何ですか。

http://flask.pocoo.org/docs/0.12/templating/#standard-context

あなたはそれが行われていない場合、それは利用できません。

あなたはボンネットの下に見えるようにしたい場合は、この特定の問題の出発点はここにあるかもしれない:

https://github.com/pallets/flask/blob/master/flask/templating.py#L121

https://github.com/pallets/flask/blob/master/flask/app.py#L699

+0

だから私はJinja2のを定義したいと思う任意の明白な理由があります。フラスコ内のrender_template()を単に使うのではなく、環境とget_template? – dabishan

+0

@ dabishanもしあなたがカスタマイズされたJinja環境を望むのであれば、この環境のワンショット使い方でなければ、おそらく 'create_jinja_environment()'をオーバーライドするでしょう。それについてのシナリオを本当に考えることはできませんが、そうではないというわけではありません。 – bgse

関連する問題