我想知道url_for用于在模板和应用程序代码中生成链接的原因。
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>
而不是硬编码路径?
从Flask的文档中,
flask.url_for(endpoint, **values) 使用提供的方法生成指向给定端点的URL。 目标端点未知的变量参数将作为查询参数附加到生成的URL。如果查询参数的值是None,则将跳过整个对。如果蓝图处于活动状态,则可以通过在本地端点前面加点(.)来快捷引用同一蓝图。
flask.url_for(endpoint, **values)
使用提供的方法生成指向给定端点的URL。
目标端点未知的变量参数将作为查询参数附加到生成的URL。如果查询参数的值是None,则将跳过整个对。如果蓝图处于活动状态,则可以通过在本地端点前面加点(.)来快捷引用同一蓝图。
None
.
现在,您无需使用静态网址即可到达端点,而是可以使用url_for它对端点进行反向匹配。当您有可能要在运行时指定的参数时,它特别有用。
{{ url_for('events', user_id=user.id, year=2013) }} /events/1388224/2013
生成的路径始终是绝对路径(以“ /”开头),因此无论当前URL如何,它们都可以工作。它们还考虑了是否将应用程序安装在前缀而不是根目录(例如“ / myapp / events / 1/2013”)。
该_external=True参数可用于生成带有服务器名称的URL,以便可以在外部(例如电子邮件中)使用它们。
_external=True
View your events: {{ url_for("events", user_id=user.id, year=2013, _external=True) }}