【问题标题】:Why use Flask's url_for?为什么使用 Flask url_for?
【发布时间】:2013-06-30 10:37:30
【问题描述】:

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

而不是硬编码路径?

【问题讨论】:

    标签: python flask


    【解决方案1】:

    来自 Flask 的documentation

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-19
      • 1970-01-01
      • 2012-12-16
      • 2018-01-06
      • 2014-08-08
      • 1970-01-01
      相关资源
      最近更新 更多