1. 在蓝图中使用 url_for:
# my_blueprint.py
from flask import Blueprint, render_template, url_for
my_blueprint = Blueprint('my_blueprint', __name__)
@my_blueprint.route('/hello')
def hello():
# 在蓝图中使用 url_for 构造 URL
other_endpoint_url = url_for('my_blueprint.other_endpoint')
return render_template('hello.html', other_endpoint_url=other_endpoint_url)
@my_blueprint.route('/other')
def other_endpoint():
return 'This is the other endpoint'
2. 在模板中使用 url_for:
<!-- templates/hello.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello Blueprint</title>
</head>
<body>
<h1>Hello from My Blueprint!</h1>
<p>Visit the <a href="{{ other_endpoint_url }}">other endpoint</a>.</p>
</body>
</html>
在模板中,你可以使用 url_for 生成链接到蓝图中其他视图函数的 URL。
3. 在应用中使用 url_for:
# app.py
from flask import Flask, render_template, url_for
from my_blueprint import my_blueprint
app = Flask(__name__)
# 注册蓝图
app.register_blueprint(my_blueprint, url_prefix='/my')
@app.route('/')
def index():
# 在应用中使用 url_for 构造 URL
my_blueprint_hello_url = url_for('my_blueprint.hello')
return render_template('index.html', my_blueprint_hello_url=my_blueprint_hello_url)
在应用的视图函数中,你可以使用 url_for 生成链接到蓝图中视图函数的 URL。
在这些例子中,url_for 的第一个参数是视图函数的名称,可以是蓝图名称加上视图函数名称,也可以是其他 endpoint 的名称。如果蓝图中有一个 hello 视图函数,那么在蓝图外部的视图函数中可以使用 'my_blueprint.hello' 作为参数来调用 url_for。
总的来说,url_for 是一个非常有用的函数,可以帮助你动态生成 URL,使得你的应用更加灵活和可维护。
转载请注明出处:http://www.zyzy.cn/article/detail/7345/Flask