Flask的路由系统是如何实现动态路径匹配的?

2026-06-11 06:161阅读0评论SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计572个文字,预计阅读时间需要3分钟。

Flask的路由系统是如何实现动态路径匹配的?

在Flask中,可以使用`methods`参数指定路由支持的方法类型。以下是对您提供内容的简化

使用Flask框架定义路由,支持GET和POST请求。

from flask import Flask, render_templateapp=Flask(__name__)@app.route('/login', methods=['GET', 'POST'])def student_info(): return Hello Word,默认不写methods参数,methods参数只支持GET请求

methods

当前视图支持的请求方法

from flask import Flask,render_template app = Flask(__name__) @app.route("/login", methods=["GET", "POST"]) def student_info(): return "Hello wWrd "

默认不写methods参数只支持GET请求,methods参数是我们重写里面的方法,并不是追加

endpoint

路由映射-视图函数

from flask import Flask,render_template,redirect app = Flask(__name__) @app.route("/login", methods=["GET", "POST"], endpoint="log") def student_info(): return "Hello wWrd " # 相当于给/login取了个别名,以后在视图函数中哪里用到该路径直接使用别名就可以解析到/login这个路径 例如: @app.route(‘/index‘,methods=[‘GET‘, ‘POST‘]) def index(): return redirect("log")

defaults

默认参数 一旦默认参数存在 视图函数中必须有一个形参去接收 形参变量名必须与 defaults 中的一致

from flask import Flask,render_template @app.route(‘/index‘,methods=[‘GET‘, ‘POST‘],defaults={‘id‘:2}) def index(id): # 这个形参必须跟defaults的key保持一致 print(id) # 2 return render_template(‘login.html‘)

strict_slashes

是否严格遵循路由匹配规则 "/"

from flask import Flask,render_template,redirect app = Flask(__name__) @app.route("/login", methods=["GET", "POST"],strict_slashes=False) def student_info(): return "Hello wWrd " # 默认遵守严格模式strict_slashes=True

在我们在浏览器上请求该路径时,如果输入的是下面的路径那么浏览器会自动为我们加上路径分隔符"/"

strict_slashes=False时无论后面有没有"/"都可以匹配的到

redirect_to

永久重定向,且不会经过视图函数

@app.route(‘/index‘,methods=[‘GET‘, ‘POST‘],redirect_to=‘/login‘) def index(): return render_template(‘index.html‘)

动态参数路由

在请求路径中添加其他参数

from flask import Flask,render_template,redirect app = Flask(__name__) @app.route("/login/<args>/<int:num>", methods=["GET", "POST"],) # int表示必须是整型 def student_info(args,num): # 形参的名字必须和路由的参数保持一致 print(args,num) # aaaa 2 return "Hello word "

动态参数用 <> 包裹
<> 内可以写为 <int:num> 这样的话。参数必须是给int类型,不然会报错
<> 内不写的话,默认为str

Flask的路由系统是如何实现动态路径匹配的?

本文共计572个文字,预计阅读时间需要3分钟。

Flask的路由系统是如何实现动态路径匹配的?

在Flask中,可以使用`methods`参数指定路由支持的方法类型。以下是对您提供内容的简化

使用Flask框架定义路由,支持GET和POST请求。

from flask import Flask, render_templateapp=Flask(__name__)@app.route('/login', methods=['GET', 'POST'])def student_info(): return Hello Word,默认不写methods参数,methods参数只支持GET请求

methods

当前视图支持的请求方法

from flask import Flask,render_template app = Flask(__name__) @app.route("/login", methods=["GET", "POST"]) def student_info(): return "Hello wWrd "

默认不写methods参数只支持GET请求,methods参数是我们重写里面的方法,并不是追加

endpoint

路由映射-视图函数

from flask import Flask,render_template,redirect app = Flask(__name__) @app.route("/login", methods=["GET", "POST"], endpoint="log") def student_info(): return "Hello wWrd " # 相当于给/login取了个别名,以后在视图函数中哪里用到该路径直接使用别名就可以解析到/login这个路径 例如: @app.route(‘/index‘,methods=[‘GET‘, ‘POST‘]) def index(): return redirect("log")

defaults

默认参数 一旦默认参数存在 视图函数中必须有一个形参去接收 形参变量名必须与 defaults 中的一致

from flask import Flask,render_template @app.route(‘/index‘,methods=[‘GET‘, ‘POST‘],defaults={‘id‘:2}) def index(id): # 这个形参必须跟defaults的key保持一致 print(id) # 2 return render_template(‘login.html‘)

strict_slashes

是否严格遵循路由匹配规则 "/"

from flask import Flask,render_template,redirect app = Flask(__name__) @app.route("/login", methods=["GET", "POST"],strict_slashes=False) def student_info(): return "Hello wWrd " # 默认遵守严格模式strict_slashes=True

在我们在浏览器上请求该路径时,如果输入的是下面的路径那么浏览器会自动为我们加上路径分隔符"/"

strict_slashes=False时无论后面有没有"/"都可以匹配的到

redirect_to

永久重定向,且不会经过视图函数

@app.route(‘/index‘,methods=[‘GET‘, ‘POST‘],redirect_to=‘/login‘) def index(): return render_template(‘index.html‘)

动态参数路由

在请求路径中添加其他参数

from flask import Flask,render_template,redirect app = Flask(__name__) @app.route("/login/<args>/<int:num>", methods=["GET", "POST"],) # int表示必须是整型 def student_info(args,num): # 形参的名字必须和路由的参数保持一致 print(args,num) # aaaa 2 return "Hello word "

动态参数用 <> 包裹
<> 内可以写为 <int:num> 这样的话。参数必须是给int类型,不然会报错
<> 内不写的话,默认为str

Flask的路由系统是如何实现动态路径匹配的?