为什么要使用Flask的url_for?

发布于 2021-01-29 14:10:26

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

而不是硬编码路径?

关注者
0
被浏览
104
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    从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) }}
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看