如何在模板中将kwargs传递给uri_for

时间:2013-12-10 16:30:39

标签: google-app-engine jinja2 webapp2

在我的模板中,我有:

<a href="{{ url_for('named_url', slug=x.slug) }}">x.name</a>

观点:

webapp2.Route('/smth/<slug>/', handler=SomeHandler, name='named_url'),

我收到此错误:

ValueError: URI buiding error: Value "" is not supported for argument "slug".

我也尝试过:

<a href="{{ url_for('named_url', slug={{x.slug}}) }}">x.name</a>

<a href="{{ url_for('named_url', slug='{{x.slug}}') }}">x.name</a>

但它不起作用。当我在模板中的其他位置打印{{x.slug}}时,它会打印出正确的slug。此外,当我硬编码slug='some_slug'时,它也有效。

2 个答案:

答案 0 :(得分:2)

我也经历过这个ValueError并且(通过一些试验和错误)发现它是由缺少正则表达式的指定路由定义引起的。

换句话说,尝试将路线改为:

webapp2.Route('/smth/<slug:.*>/', handler=SomeHandler, name='named_url'),

答案 1 :(得分:1)

在模板变量中,你几乎处于“Python模式”。因此,您只需直接使用变量,错过大括号和引号:

{{ url_for('named_url', slug=x.slug) }}