13

我想知道使用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>

而不是硬编码路径?

4

1 回答 1

19

从 Flask 的文档中,

flask.url_for(endpoint, **values)

使用提供的方法生成到给定端点的 URL。

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

现在,您可以使用url_forwhich 对端点进行反向匹配,而不是指定静态 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) }}
于 2013-07-02T21:32:58.503 回答