首页 > 其他分享 >09.路由跳转

09.路由跳转

时间:2023-11-19 19:11:30浏览次数:31  
标签:__ index url 09 视图 跳转 login 路由

路由跳转

应用场景

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

使用 url_for() 函数的优点

相比使用相对路径,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("蓝图名.视图函数名")

路由生成

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

from flask import Flask, url_for

# 创建 Flask 应用程序实例
app = Flask(__name__)

@app.route("/helloworld")
def hello():
return url_for("hello")


# 运行应用程序
if __name__ == '__main__':
app.run(debug=True, port=5055)

可以看到响应返回了生成的路由地址。

蓝图路由生成

使用 url_for("蓝图名.视图函数名") 即可返回对应视图函数的 url。

from flask import Flask, Blueprint, url_for

# 创建 Flask 应用程序实例
app = Flask(__name__)


login_api = Blueprint("login", __name__, url_prefix="/login")
index_api = Blueprint("index", __name__, url_prefix="/index")

@login_api.route("")
def login():
print("登录,成功后跳转到首页")
return url_for("index.index")

@index_api.route("")
def index():
print("首页")
return {"code": 0, "msg": "success"}


# 运行应用程序
if __name__ == '__main__':
app.register_blueprint(index_api)
app.register_blueprint(login_api)
app.run(debug=True, port=5055)

页面中可以看到响应的内容中返回了生成的路由地址。

路由跳转

重定向(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 使用)
    • from flask import Flask, Blueprint, url_for, redirect

      # 创建 Flask 应用程序实例
      app = Flask(__name__)


      login_api = Blueprint("login", __name__, url_prefix="/login")
      index_api = Blueprint("index", __name__, url_prefix="/index")

      @login_api.route("")
      def login():
      print("登录,成功后跳转到首页")
      # return url_for("index.index")
      return redirect(url_for("index.index"))

      @index_api.route("")
      def index():
      print("首页")
      return {"code": 0, "msg": "success"}


      # 运行应用程序
      if __name__ == '__main__':
      app.register_blueprint(index_api)
      app.register_blueprint(login_api)
      app.run(debug=True, port=5055)

    • 相应结果为:{"code":0,"msg":"success"}说明已经成功的跳转到了 index 路由。

标签:__,index,url,09,视图,跳转,login,路由
From: https://www.cnblogs.com/csfsz/p/17842417.html

相关文章

  • 跳转语句
    跳转语句的概念跳转语句用于程序的转移控制,改变程序的执行流程,转移到指定之处;与程序转移有关的跳转包括break语句、continue语句以及goto语句;break和continue语句主要与循环有关;goto语句在C语言中有,他是无条件跳转,所以可以完全替代break和continue语句,一般要慎用。break语句的使用......
  • HCIA-VLAN间路由
    前言部署了Vlan的传统交换机无法实现不同Vlan之间的二层报文转发,因此必须引入路由技术来实现不同Vlan之间的通信。Vlan间路由有两种方法:一、通过二层交换机配合路由器来实现二、可以通过三层交换机来实现。Vlan间通讯限制由于每个Vlan都是一个独立的广播域,不同的Vlan之间二......
  • oracle19cPDB数据库连不上,提示ORA-01109: database not open
    今天尝试创建了一个RAC环境的PDB数据库,在本地执行alterpluggabledatabasepdb01open成功了,但是使用上去了plus连接还是连接不上,提示错误如下:C:\Users\Administrator>sqlplussystem/[email protected]:1521/pdb01SQL*Plus:Release19.0.0.0.0-Productionon星期日1......
  • 前端学习笔记202309学习笔记第九十六天-vue3-什么时候defineModel之1
     ......
  • 前端学习笔记202309学习笔记第九十六天-vue3-什么时候defineOptions之2
    ......
  • 前端学习笔记202309学习笔记第九十六天-vue3-什么时候defineOptions之1
     ......
  • 02.接口路由技术
    接口路由技术什么是路由路由是将URL地址与应用程序中的函数相映射的过程。当用户在浏览器中输入特定的URL地址时,Flask会调用与该地址相匹配的函数并返回相应的结果。路由的应用场景在Web应用程序都通过路由技术使用URL链接来控制网页显示的内容,只要知道URL链接,即使......
  • Spring Cloud Gateway路由加载过程
    SpringCloud2021.0.5相关类先认识下相关的几个类RoutePredicateFactory,断言工厂,用于创建具体的断言。GatewayFilterFactory,过滤器工厂,用于创建具体的过滤器。Predicate,断言接口。GatewayFilter,过滤器接口。RouteDefinition,路由定义对象,在yml里配置的路由规则其实就是......
  • CF909 div3
    CF909div3A.GamewithIntegers题意两人博弈,给出一个数字,每人每次可以选择令该数字+1或者-1。如果在10步以内可以令数字为3的倍数,先手胜。否则后手胜。数据范围多组数据,\(1<=T<=100,1<=n<=1000\)题解后手可以恢复现场,所以先手最多只能有效操作1次。若+1或者-1......
  • P7775 [COCI2009-2010#2] VUK 题解
    链接这道题卡了我$40$多分钟。其实就是跑两遍广搜,第一遍算出每个点距离树的最小距离,第二遍开个优先队列,算出逃回窝的途中最大可能的离它最近的树的距离的最小值。接下来重点讲一下第二遍广搜。首先,我们要知道,如果我们用queue,那么最先到的点不一定是最优的。所以,我们需要......