当前位置: 首页 > 面试题库 >

为什么要使用Flask的url_for?

轩辕乐邦
2023-03-14
问题内容

我想知道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,则将跳过整个对。如果蓝图处于活动状态,则可以通过在本地端点前面加点(.)来快捷引用同一蓝图。

现在,您无需使用静态网址即可到达端点,而是可以使用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) }}


 类似资料:
  • 问题内容: 据我所知,Tornado是一台服务器和一个框架。在我看来,一起使用Flask和Tornado就像添加另一个抽象层(更多的开销)。人们为什么同时使用Flask和Tornado,有什么优势? 问题答案: 据我所知,Tornado是一台服务器和一个框架。在我看来,一起使用Flask和Tornado就像添加另一个抽象层(更多的开销)。人们为什么同时使用Flask和Tornado,有什么优势?根

  • 本文向大家介绍为什么要使用 kafka,为什么要使用消息队列?相关面试题,主要包含被问及为什么要使用 kafka,为什么要使用消息队列?时的应答技巧和注意事项,需要的朋友参考一下 缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。 解耦和扩展性:项目开始的

  • 问题内容: 我注意到,Oracle JDK中使用了许多Java 8方法,如果给定的对象(参数)为,则会在内部抛出该方法。 但是,如果取消引用对象,则将被抛出。那么,为什么要做这个额外的null检查并抛出 ? 一个明显的答案(或好处)是它使代码更具可读性,我同意。我很想知道在方法开始时使用的其他原因 。 问题答案: 因为您可以这样做使事情变得 明确 。喜欢: 或更短: 现在您 知道了 : 当 成功使

  • 问题内容: 我是Mockito的新手,我已经开始学习它。但是我有一些疑问。为什么我们需要使用Mockito?据我所知,它用于模拟(创建虚拟对象)并在具有实际运行代码之前编写测试用例。但是,如果我想测试已经实施的代码以检查它们是否正常运行,该怎么办。我如何使用Mockito进行测试? 例如,我有CRUD方法,我想通过使用我的Create方法在数据库中实际插入数据来测试Create是否正常运行,这与其

  • 本文向大家介绍为什么要使用RabbitMQ?相关面试题,主要包含被问及为什么要使用RabbitMQ?时的应答技巧和注意事项,需要的朋友参考一下 可靠性(Reliability) RabbitMQ 使用一些机制来保证可靠性,如持久化、传输确认、发布确认。 灵活的路由(Flexible Routing) 在消息进入队列之前,通过 Exchange 来路由消息的。对于典型的路由功能,RabbitMQ 已

  • 问题内容: 为什么我们要使用方法设置参数,因为我们可以通过在中设置参数并使用来获取参数来完成同样的事情? 问题答案: 是动态的,其可以被设置和复位运行期间。 所指定的是静态的,在应用程序的生命周期内不会更改。 例: 数据库属性,例如数据库名称配置属性。它将主要配置为上下文 并且,如果要设置基于运行时更改派生的属性值,则上下文属性应为“上次登录的用户”或“失败次数”。