为什么要使用Flask的url_for?

17

我想了解在模板和应用程序中使用 url_for 生成链接的原因。

通过这样做,我能获得什么好处:

<link rel="stylesheet" href="{{ url_for('static', filename='css/main.css') }}">

以及这个:

<ul>
    <li><a href="{{ url_for('index') }}">Home</a></li> 
    <li><a href="{{ url_for('about') }}">About Us</a></li>
    <li><a href="{{ url_for('contact') }}">Contact</a></li>
</ul>

不要硬编码路径?

1个回答

23

来自Flask的文档,

flask.url_for(endpoint, **values)

生成给定端点和提供的方法的URL。

对于目标终点未知的可变参数将作为查询参数附加到生成的URL后面。如果查询参数的值是None,则整个对将被跳过。如果蓝图处于活动状态,则可以通过在本地端点前加上一个点(.)来快捷引用同一蓝图。

现在,您可以使用url_for进行反向匹配以达到访问端点的静态URL的效果。当您需要指定运行时参数时,它特别有用。

{{ url_for('events', user_id=user.id, year=2013) }}
/events/1388224/2013

生成的路径始终是绝对路径(以“/”开头),因此可以在不考虑当前URL的情况下使用。它们还考虑了应用程序是否安装在前缀而不是根目录下(例如“/myapp/events/1/2013”)。

_external=True 参数可用于生成包含服务器名称的URL,以便可以在外部使用,比如在电子邮件中。

View your events: {{ url_for("events", user_id=user.id, year=2013, _external=True) }}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接