📜  在 Flask 中生成动态 URL(1)

📅  最后修改于: 2023-12-03 15:07:39.311000             🧑  作者: Mango

在 Flask 中生成动态 URL

在 Flask 中生成动态 URL 可以让你在你的应用程序中实现灵活的路由规则。通过将特殊的占位符添加到路由规则中,Flask 就可以从 URL 中提取信息。

占位符

占位符指的是使用一对尖括号包裹的变量名称。在编写路由规则时,你可以通过添加占位符将变量传递到对应的视图函数中。例如:

from flask import Flask

app = Flask(__name__)

@app.route('/user/<username>')
def show_user_profile(username):
    return 'User %s' % username

在这个示例中,<username> 占位符指定了路由规则。这个规则将匹配 /user 后面的任何字符串,并将其传递给 show_user_profile 方法。

路由规则

路由规则是 Flask 应用程序中用于匹配 URL 的模式。Flask 使用 Werkzeug 路由模块来匹配 URL。

使用路由规则时,可以在 URL 中添加可变部分。这些可变部分可以包含动态内容,例如:

@app.route('/post/<int:post_id>')
def show_post(post_id):
    return 'Post %d' % post_id

在这个示例中,<int:post_id> 占位符指定了路由规则。这个规则将匹配 /post 后面的一个整数,并将其传递给 show_post 方法。

URL 的反转

Flask 提供了一个url_for()函数,它可以通过视图函数的名称和所需的任意参数来反转 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'))

在这个示例中,url_for() 函数使用视图函数的名称创建 URL。url_for() 同样可以接收任意数量的关键字参数,用于生成 URL 中的查询字符串。如果视图函数需要任意数量的关键字参数,这些参数也可以在 url_for() 中传递。

markdown 格式示例

下面是一个 markdown 格式的示例,其中包含了生成动态 URL 的示例代码片段。

占位符

占位符指的是使用一对尖括号包裹的变量名称。在编写路由规则时,你可以通过添加占位符将变量传递到对应的视图函数中。例如:

from flask import Flask

app = Flask(__name__)

@app.route('/user/<username>')
def show_user_profile(username):
    return 'User %s' % username

在这个示例中,<username> 占位符指定了路由规则。这个规则将匹配 /user 后面的任何字符串,并将其传递给 show_user_profile 方法。

路由规则

路由规则是 Flask 应用程序中用于匹配 URL 的模式。Flask 使用 Werkzeug 路由模块来匹配 URL。

使用路由规则时,可以在 URL 中添加可变部分。这些可变部分可以包含动态内容,例如:

@app.route('/post/<int:post_id>')
def show_post(post_id):
    return 'Post %d' % post_id

在这个示例中,<int:post_id> 占位符指定了路由规则。这个规则将匹配 /post 后面的一个整数,并将其传递给 show_post 方法。

URL 的反转

Flask 提供了一个url_for()函数,它可以通过视图函数的名称和所需的任意参数来反转 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'))

在这个示例中,url_for() 函数使用视图函数的名称创建 URL。url_for() 同样可以接收任意数量的关键字参数,用于生成 URL 中的查询字符串。如果视图函数需要任意数量的关键字参数,这些参数也可以在 url_for() 中传递。