在Jinja2中将kwargs从宏传递到url_for

时间:2020-08-19 09:37:22

标签: flask macros jinja2 navbar url-for

我会直截了当。首先看一下代码

{% macro nav_link(endpoint, name) %}

<li class="nav-item my-2 my-md-0 mx-3 py-0 px-3 {% if request.endpoint.endswith(endpoint) %} active{% endif %}">
    <a class="nav-link" href="{{ url_for(endpoint) }}">{{ name }}</a>
</li>

{% endmacro %}

{{ nav_link('main.home', 'Home') }}
{{ nav_link('main.home', 'Exprole') }}
{{ nav_link('user.account', 'Account') }}
{{ nav_link('user.logout', 'Logout') }}

现在您已经看过代码,可以说我想正常在帐户链接上传递ID,它可以像{{ url_for('account', id=2)}}那样完成,但是由于此url_for在宏{{1中}}我只是无法将nav_link中的id传递为kwargs:-nav_link因为

  • kwargs a是一个字典
  • 即使我做类似nav_link('user.account', id=2, 'Account')的操作,并且{{ url_for(endpoint, **kwargs) }}中也没有kwargs链接(我在这里不需要id),所以kwargs将为none(空字典),因此nav_link('main.home','home')之后,将引发错误
  • 并且,如果您正在考虑endpoint语句,那么kwargs还是一个列表

希望我可以理解 如果您有这个问题的答案,请剪切我想听听您要说的话

0 个答案:

没有答案