一尘不染

为什么要使用Flask的url_for?

python

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

而不是硬编码路径?


阅读 301

收藏
2021-01-20

共1个答案

一尘不染

从Flask的文档中

flask.url_for(endpoint, **values)

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

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

现在,您无需使用静态网址即可到达端点,而是可以使用url_for它对端点进行反向匹配。当您有可能要在运行时指定的参数时,它特别有用。

{{ 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) }}
2021-01-20