阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

视图概述与路由

114次阅读
没有评论

共计 1539 个字符,预计需要花费 4 分钟才能阅读完成。

一、视图概述

  • 作用

    接收 web 请求并返回 web 响应

  • 本质

    python 的函数

  • 使用

    先定义视图再匹配路由

二、路由

  • 概述

    请求地址会被底层 Werkzeug 库处理 (去除 ip 和端口),用于进行路由匹配,匹配成功后将找打的视图函数进行调用,处理本次用户的请求

  • 格式

    • @工程对象.route(“url 地址”)
    • @蓝图对象.route(“url 地址”)
  • url_map 属性

    功能:查看当前所有的路由配置

    使用:app.url_map

  • 无参路由

    @app.route('/index/') def index(): return 'Hello Flask'
  • 传参路由

    A、带一个参数的路由

    # 带参路由,参数写在 <> 中 @app.route('/arg/<name>') def arg(name): return 'Hello %s !' % name

    B、带多个参数的路由

    @app.route('/args/<name>_<age>') @app.route('/args/<name>/<age>') def args(name, age): print(name, age) return name, age

    C、参数类型限制

    • string 默认 参数类型为字符串
    • int 限制参数类型为整数
    • float 限制参数类型为小数
    • path 其实也是字符串,只是’/’ 不再是分隔符
    @app.route('/welcome/<string:name>/<int:age>/<float:height>/<path:pstr>/') def welcome(name, age, height, pstr): print(type(name),type(age), type(height), type(pstr)) print(name, age, height, pstr) return '类型限制'

    注意:

    • 路由末尾的’/’ 建议都加上,因为路由需要的时候浏览器会自动加上,输入时加不加都行
    • 若需要制定参数,将参数写在 <> 中,视图函数参数要与路由参数一致
    • 若需要知道参数类型,如:int/float/path 等,写在参数前,用’:’ 与参数隔开
    • 不指定类型,参数默认是 string,path 其实也是字符串,只是’/’ 不再是分隔符

    D、正则约束

    • 作用

      使用正则表达式对路由进行更具体的约束

    • 正则转换类(app.py)

      from werkzeug.routing import BaseConverter class RegexConverter(BaseConverter): def __init__(self, url, *args): super().__init__(url) self.regex = args[0]
    • 给 app 对象注册路由转换类

      app.url_map.converters["regex"] = RegexConverter
    • 使用

      @app.route("/test_regex/<regex('\d{2}'):age>/") def test_regex(age): # 正则约束是约束的值的样子,不会约束类型 print(age) return age
  • HTTP 方法

    概述:默认视图可以被 GET 访问,flask 中可以规定以什么样的方式请求视图,如果使用不正确的请求方式会返回 405 错误

    GET

    @app.route("/get/") def test_get(): return "GET"

    POST

    @myApp.route("/post/", methods=["POST"]) def test_post(): return "POST"

    GET OR POST

    @myApp.route("/get_post/", methods=["GET", "POST"]) def test_get_post(): return "test_get_post"
  • http 请求方式

    • get
    • post
    • put
    • patch
    • delete

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-05-26发表,共计1539字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中