flask框架——url_for()函数

概念:url_for() 是一个URL 反向解析器。

你给它一个视图函数的名字(或者蓝图名+视图函数名),它返回该视图对应的 URL。

# 使用url_for(视图函数名)即可返回对应视图函数的url

from flask import Flask, url_for,Blueprint
#创建Flask应用程序实例
app = Flask(__name__)


# 为普通路由生成 URL
@app.route('/user/profile')    # 传的什么路径返回什么路径,ey:/helloworld
def user_profile():  # 访问:http://127.0.0.1:5001/user/profile
    return  url_for('user_profile')     # /user/profile
    # 添加查询参数
    # return  url_for('user_profile', page=1, sort='name')   # /user/profile?page=1&sort=name


# 为带参数的路由生成 URL
@app.route("/user/<username>")
def show_user(username):  # http://127.0.0.1:5001/user/test ---> 当前url是/user/test. 用户: test
    # 必须提供 username 参数
    user_url = url_for('show_user', username=username)
    print(f"当前用户URL: {user_url}")
    return f"当前url是{user_url}. 用户: {username}"


# 为蓝图中的路由生成 URL
user_bp = Blueprint('user_bp', __name__)
@user_bp.route('/login', methods=['GET'])
def login():    # http://127.0.0.1:5001/login --->. 路径是: /login
    url= url_for('user_bp.login')
    return f'路径是: {url}'


if __name__== "__main__":
    app.register_blueprint(user_bp)
    app.run('0.0.0.0',debug=True, port=5001)

在jinjia2模版中使用:

<!-- 链接到页面 -->
<a href="{{ url_for('user.login') }}">登录</a>

<!-- 显示图片 -->
<img src="{{ url_for('static', filename='images/banner.jpg') }}" alt="Banner">

<!-- 带参数的链接 -->
<a href="{{ url_for('show_user', username=current_user.name) }}">
    我的资料
</a>

 

posted @ 2025-08-21 14:13  Alieen617  阅读(17)  评论(0)    收藏  举报