zoukankan      html  css  js  c++  java
  • 修改web前端访问端口

    说明: URL规则可添加变量部分,也就是说将符合同种规则的URL抽象成一个URL模式


    1
    2
    3
    @app.route('/instance/<uuid>/')
    def instance(uuid):
        return 'Instance: {}'.format(uuid)

    注意: 尖括号中内容是动态的,凡是匹配到/instance/前缀的都会被映射到这个路由上,在内部把uuid作为参数而获得,默认类型为字符串

    默认转换:

    说明: 可通过<converter:variable_name>形式来指定转换方式,converter可以是如下默认转换器,也可以是继承自werkzeug.routing.BaseConverter子类定义的转换器

    转换(默认的转换器存储在app.url_map.converts字典里,支持自定义) 简单
    string 接收没有任何斜杠/的文本
    int 接收整型
    float 接收浮点型
    path 接收任意文本包含/的文本
    uuid 接收唯一识别码
    any() 和PY中的内置any用法一致,可指定多肿可选路径,但必须传入参数

    扩展: 如上转换都是基于子路径,如果不想使用子路径,其实还可以通过GET/POST传递参数的方式给/instance,然后在视图函数内部通过request.args.get()和request.form.get()来获取实现

    定义转换:


    说明: FLASK还支持自定义转换器如Rebbit中使用分割符来实现如http://reddit.com/r/python+flask隔开两个社区名字,方便同时查看来自多个社区的帖子,我们可以自定义甚至不一定使用"+"来实现


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    """
    #
    # Authors: limanman
    # 51CTOBG: http://xmdevops.blog.51cto.com/
    # Purpose:
    #
    """
    # 说明: 导入公共模块
    from flask import Flask, jsonify
    from werkzeug.routing import BaseConverter
    # 说明: 导入其它模块
    class ListConverter(BaseConverter):
        def __init__(self, url_map, separator=u'+'):
            super(ListConverter, self).__init__(url_map)
            self.separator = separator
        def to_python(self, value):
            return value.split(self.separator)
        def to_url(self, values):
            values_quoted = []
            for value in values:
                values_quoted.append(BaseConverter.to_url(value))
            return self.separator.join(values_quoted)
    app = Flask(__name__)
    app.url_map.converters.update({
        'list': ListConverter
    })
    @app.route('/r/<list(separator=u"+"):page_names>/')
    def r(page_names):
        return jsonify(page_names)
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=9000, debug=True)

    注意: 继承werkzeug.routing.BaseConverter的类必须实现两个方法to_python(value),它定义了匹配的路径以何种方式传入视图函数,to_url(value),它定义了传入视图函数的参数的路径原型的编码后形式,它是供内部调用,但也是必须实现的方法,最后需要将ListConverter放到app.url_map.converters中去才会运行时生效,按照如上转换器访问http://127.0.0.1:9000/python+flask/时传入视图函数的参数page_names其实是一个被分割的列表[u'python', u'flask'],这样我们就可以模拟Reddit实现同时获取多个社区帖子

    提交方法:


    说明: HTTP有多个访问URL的方法,默认只响应GET,但可以通过app.route装饰器传递methods参数改变此行为,默认FLASK会自动处理HEAD/OPTIONS请求,常用GET/POST请求但随着AJAX和RESET风格应用的流行,PUT/DELETE/PATCH请求也使用很广泛~


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    """
    #
    # Authors: limanman
    # 51CTOBG: http://xmdevops.blog.51cto.com/
    # Purpose:
    #
    """
    # 说明: 导入公共模块
    from flask import Flask, request, jsonify
    # 说明: 导入其它模块
    app = Flask(__name__)
    @app.route('/', methods=['GET''POST'])
    def index():
        return jsonify([
            request.args,
            request.form
        ])
    if __name__ == '__main__':
        app.run(host='0.0.0.0', port=9000, debug=True)

    说明: GET/POST是我们最常用的方式,至于获取GET/POST请求的参数分别用request.args和request.form来获取通过jsonify生成的响应我们可以看出来其实它们就是两个参数字典

    唯一特性:


    说明: FLASK的规则都是基于WerkZeug的路由模块,它规定URL唯一,当装饰器@app.route('/instance/')这样时访问/instance时会自动被修改为/instance/,而当装饰器@app.route('/instance')这样时访问/instance/会返回404,必须访问/instance才可以获取到你想要的内容~以此来保证唯一性~

  • 相关阅读:
    OpenGL在图形管道中调用了什么用户模式图形驱动程序(UMD)?
    MLIR算子量化Quantization
    最大限度地减少块输出中间结果的计算和存储
    Echarts(一)
    Oracle部署安装
    JS使用
    sqlplus导入sql,dmp导入导出
    一款强大的Visual Studio插件!CodeRush v19.1.9全新来袭
    Web界面开发必看!Kendo UI for jQuery编辑功能指南第二弹
    报表开发神器!DevExpress Reporting v19.1全平台新功能解析
  • 原文地址:https://www.cnblogs.com/dpf-learn/p/8057895.html
Copyright © 2011-2022 走看看