Flask框架中路由的定义和使用方法

Flask框架中路由的定义和使用方法

1.定义路由
定义路由的三个细节

  • 路由对应的URL必须以 / 开头
  • app.url_map 获取所有路由规则,路由规则中主要包含 URL资源段、支持的请求方式、视图函数标记 三部分内容
  • app.route() 的 methods参数 指定路由支持的请求方式
from flask import Flask

app = Flask(__name__)

# 1.路由对应的URL必须以/开头
# 2.通过app的url_map属性获取所有的路由规则 (URL资源段 支持的请求方式 视图函数标记)
# 3.可以通过route方法的methods参数指定路由支持的请求方式
@app.route('/hello', methods=['post', 'get'])
def index():

    return "index"


if __name__ == '__main__':
    print(app.url_map)

    # 获取路由信息
    # for rule in app.url_map.iter_rules():
    #     print(rule.rule, rule.methods, rule.endpoint)

    app.run(debug=True)

2.路由变量

  • 路由变量的作用是 传递URL路径参数, 实现动态URL
  • 格式: /xx/<路由变量>
from flask import Flask

app = Flask(__name__)

# 路由变量: 传递URL路径参数
# 格式: /user/<路由变量名>
@app.route('/user/<userid>')
def index(userid):  # 必须定义同名形参接收路由变量的值
    print(userid)
    return "index"


if __name__ == '__main__':
    app.run(debug=True)

3.路由转换器

  • 路由转换器的作用是 对URL传递的参数进行格式校验, 类似Django设置URL时的正则表达式参数
  • 格式: /xx/<转换器名:路由变量>
  • 所有的转换器类都继承自 BaseConverter 类
from flask import Flask

app = Flask(__name__)

# 路由转换器: 对路由变量进行格式校验  条件不满足返回404
# 格式: /user/<路由转换器名:路由变量>
@app.route('/user/<int:userid>')  # int: 内置转换器, 要求1-n个整数
def index(userid):
    print(userid)
    return "index"


if __name__ == '__main__':
    app.run(debug=True)

4.自定义转换器

  • 除了使用内置的变量转换器, 开发者还可以自定义转换器, 更加灵活的校验路由变量
  • 使用自定义转换器的步骤
    1.定义转换器类, 继承BaseConverter
    2.设置regex属性 (正则匹配规则)
    3.应用添加自定义转换器
# 自定义转换器:
# 1.定义转换器类, 继承BaseConverter
# 2.设置regex属性 (正则匹配规则)
# 3.添加自定义转换器

from flask import Flask
from werkzeug.routing import BaseConverter

app = Flask(__name__)

# 1.定义转换器类
class MobileConverter(BaseConverter):
    # 2.设置regex属性(匹配规则)
    regex = '1[3-9]\d{9}$'  # 不要设置开头的^

# 3.添加自定义转换器
app.url_map.converters['mob'] = MobileConverter

@app.route('/user/<mob:mobile>')
def index(mobile):
    print(mobile)
    return "index"

if __name__ == '__main__':
    # 获取所有的转换器 {转换器名: 转换器类}
    # print(app.url_map.converters)
    app.run(debug=True)
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Flask框架路由是指将HTTP请求映射到相应的处理器函数的过程。Flask提供了一个装饰器`@app.route()`来定义路由路由可以包含变量,用尖括号`<variable>`表示。 下面是几个常见的路由写法: 1. 简单路由: ```python from flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'Hello, World!' ``` 2. 带参数路由: ```python from flask import Flask app = Flask(__name__) @app.route('/user/<username>') def show_user_profile(username): return 'User %s' % username @app.route('/post/<int:post_id>') def show_post(post_id): return 'Post %d' % post_id ``` 3. 多个路由指向同一个视图函数: ```python from flask import Flask app = Flask(__name__) @app.route('/') @app.route('/index') def index(): return 'Hello, World!' ``` 4. 使用HTTP方法限制路由: ```python from flask import Flask, request app = Flask(__name__) @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': username = request.form['username'] password = request.form['password'] # 处理登录逻辑 else: return 'Please login' ``` 5. 使用URL构建: ```python from flask import Flask, url_for app = Flask(__name__) @app.route('/') def index(): return 'Index Page' @app.route('/login') def login(): return 'Login Page' with app.test_request_context(): print(url_for('index')) # 输出:/ print(url_for('login')) # 输出:/login ``` 以上是Flask框架的常见路由写法,可以根据项目需要进行灵活使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值