在我的模板中,我有:
<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'
时,它也有效。
答案 0 :(得分:2)
我也经历过这个ValueError并且(通过一些试验和错误)发现它是由缺少正则表达式的指定路由定义引起的。
换句话说,尝试将路线改为:
webapp2.Route('/smth/<slug:.*>/', handler=SomeHandler, name='named_url'),
答案 1 :(得分:1)
在模板变量中,你几乎处于“Python模式”。因此,您只需直接使用变量,错过大括号和引号:
{{ url_for('named_url', slug=x.slug) }}