要构建指向特定函数的URL,请使用该url_for()函数。它接受函数名称作为其第一个参数以及任意数量的关键字参数,每个参数对应于URL规则的可变部分。未知变量部分作为查询参数附加到URL。
为什么要使用URL反向功能构建URL, url_for()而不是将其硬编码到模板中?
-
反转通常比对URL进行硬编码更具描述性。
-
您可以一口气更改URL,而不必记住手动更改硬编码的URL。
-
URL构建透明地处理特殊字符和Unicode数据的转义。
-
生成的路径始终是绝对路径,避免了浏览器中相对路径的意外行为。
-
如果您的应用程序放置在URL根目录之外(例如 /myapplication而不是)/,url_for()则可以为您正确处理该应用程序。
url_for示例
示例可以直接交互式环境中运行
from flask import Flask, url_for
from markupsafe import escape
app = Flask(__name__)
@app.route('/')
def index():
return 'index'
@app.route('/login')
def login():
return 'login'
@app.route('/user/<username>')
def profile(username):
return '{}\'s profile'.format(escape(username))
# test_request_context()用于测试上下文环境
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'))
讨论区