5

次のようにジンジャ環境を構築すると:

jinja_environment = jinja2.Environment (
    loader=jinja2.FileSystemLoader ((os.path.dirname (__file__), 'templates')), extensions=[])
jinja_environment.globals['url_for'] = webapp2.uri_for

私のテンプレートでは、ルートに引数が定義されていない場合、ルート名から単純な URL を作成できます。

{{ url_for('user_home') }}

ただし、ルートに などの文字列で定義された引数が含まれている場合、引数/invoice/<:\d+>を渡すことができません。次のすべての方法で呼び出すと、次のエラーが発生して失敗しますKeyError "Missing argument "0" to build URI."

{{ url_for('invoice') }}
{{ url_for('invoice', args=['123']) }}
{{ url_for('invoice', kwargs={'__0__':'123'}) }}
{{ url_for('invoice',_request=None, args=['123'],kwargs={'__0__':'123'}) }}

このための既存の例は時代遅れのようです-少なくとも私はそれらを機能させることができませんでした. 私は何が欠けていますか?

4

2 に答える 2

7

Route('/invoice/<invoice_id>/', handler=invoice_handler, invoice_id='something')

{{ url_for('invoice', invoice_id=123) }}

上記を試すことができます.Jinjaは、ハンドラーを定義した名前付きパラメーターを期待しています.

于 2013-05-06T09:25:56.843 に答える
0

{{ url_for('invoice', 123) }}うまくいくはずだと思います。

于 2013-05-06T09:10:44.937 に答える