【问题标题】:how to transfer kwargs to uri_for in template如何在模板中将 kwargs 转移到 uri_for
【发布时间】:2013-12-10 16:30:39
【问题描述】:

在我的模板中我有:

<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' 进行硬编码时,它也可以工作。

【问题讨论】:

  • 我没有意识到有些实体没有 slug 属性。

标签: google-app-engine jinja2 webapp2


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 这是我尝试的第一件事,但我得到“ValueError: URI buiding error: Value "" is not supported for argument "slug"."
    猜你喜欢
    • 2012-09-08
    • 2012-06-28
    • 2020-04-02
    • 1970-01-01
    • 2023-03-29
    • 2019-11-10
    • 2017-12-19
    • 2012-03-02
    • 1970-01-01
    相关资源
    最近更新 更多