Flask 构造 URL

如果 Flask 能匹配 URL,那么 Flask 可以生成它们吗?当然可以。你可以用
url_for() 来给指定的函数构造 URL。它接受函数名作为第一个
参数,也接受对应 URL 规则的变量部分的命名参数。未知变量部分会添加到
URL 末尾作为查询参数。这里有一些例子:

>>> from flask import Flask, url_for
>>> app = Flask(__name__)
>>> @app.route('/')
... def index(): pass
...
>>> @app.route('/login')
... def login(): pass
...
>>> @app.route('/user/<username>')
... def profile(username): pass
...
>>> with app.test_request_context():
...  print url_for('index')
...  print url_for('login')
...  print url_for('login', next='/')
...  print url_for('profile', username='John Doe')
...
/
/login
/login?next=/
/user/John%20Doe

(这里也用到了 test_request_context() 方法,下面会
解释。即使我们正在通过 Python 的 shell 进行交互,它依然会告诉 Flask 要
表现为正在处理一个请求。请看下面的解释。 环境局部变量

为什么你要构建 URL 而非在模板中硬编码?这里有三个绝妙的理由:

  1. 反向构建通常比硬编码的描述性更好。更重要的是,它允许你一次性修改 URL,
    而不是到处边找边改。
  2. URL 构建会转义特殊字符和 Unicode 数据,免去你很多麻烦。
  3. 如果你的应用不位于 URL 的根路径(比如,在 /myapplication 下,而不
    / ), url_for() 会妥善处理这个问题。

作者:唐伯虎点蚊香,如若转载,请注明出处:https://www.web176.com/flask2/21771.html

(0)
打赏 支付宝 支付宝 微信 微信
唐伯虎点蚊香的头像唐伯虎点蚊香
上一篇 2023年5月18日 下午4:14
下一篇 2023年5月18日 下午4:14

相关推荐

发表回复

登录后才能评论