python开发——路由跳转

一、应用场景

  • 实现需求:
    • 假设在新增信息页面,完成新增操作后需要跳转到展示页面
    • 展示页面是个动态页面,如果有参数,则展示相关参数的结果,如果没有参数则展示所有信息
  • 解决方法:
    • 使用url_for()生成url,再使用redirect()方法完成路径的重定向,实现当完成添加的逻辑后,跳转展示的逻辑

1.1、路由生成

url_for()函数的优点

  1. 比直接使用url的描述性更好
  2. 可以在一个地方改变url,可维护性好
  3. url_for()函数生成的url创建会处理特殊字符的转义和Unicode数据,比较直观
  4. url_for()函数生成的路径是绝对路径,可以避免使用相对路径导致的一些问题
  5. 如果应用是放在url根路径之外的位置(/myapplication),url_for()也可以妥善处理

url_for()的用法

  • url_for()可以根据视图函数名,生成视图的路由地址
  • 语法:url_for(视图函数名,*)
    • 视图地址:str类型,可以是函数名,也可以是由蓝图和视图函数组成的地址
    • *:允许传递参数
  • 用法:
    • 用法一:url_for(视图函数名)
    • 用法二:url_for(蓝图名.视图函数名)
@app.route("/helloWord")
def hello():
    return url_for("hello")

1.2、蓝图路由生成

route_login = Blueprint("login", __name__, url_prefix="/login")
route_index = Blueprint("index", __name__, url_prefix="/index")

@route_login.route("")
def login():
    print("登录成功,进入首页")
    return redirect(url_for("index.home"))

@route_index.route("")
def home():
    print("欢迎来到首页")
    return {"code": 0, "message": "success"}

1.3、路由跳转

重定向(Redirect)就是通过各种方法将各种网络请求重新转到其他位置
可以在生成视图的路由地址后,使用redirect()方法实现路由的跳转

redirect()使得一个路由地址A与另一个路由地址B联系起来,执行A时会跳转到B

  • 语法:flask.redirect(location, code=302, Response=None)
    • location:是一个链接地址,可以使用url_for()函数得到,也可以是个静态文件地址
    • code:HTTP协议响应状态码
    • Response:是一个响应类
  • 用法:
    • 用法一:redirect(url地址)
    • 用法二:redirect(路由地址),可以结合url_for()使用
app = flask.Flask(__name__)
route_login = Blueprint("login", __name__, url_prefix="/login")
route_index = Blueprint("index", __name__, url_prefix="/index")


@route_login.route("")
def login():
    print("登录成功,进入首页")
    return redirect(url_for("index.home"))


@route_index.route("")
def home():
    print("欢迎来到首页")
    return {"code": 0, "message": "success"}