• Flask配置文件


     一、配置文件

    settings.py:

    class BaseConfig(object):
        DEBUG = False
        TESTING = False
        DATABASE_URI = 'sqlite://:memory:'
    
    
    class ProductionConfig(BaseConfig):
        DATABASE_URI = 'mysql://user@pro/foo'
    
    
    class DevelopmentConfig(BaseConfig):
        DATABASE_URI = 'mysql://user@dev/foo'
    
    
    class TestingConfig(BaseConfig):
        DATABASE_URI = 'mysql://user@test/foo'

    主文件引入配置文件:

    from flask import Flask
    app = Flask(__name__)
    # 配置文件
    app.config.from_object('settings.DevelopmentConfig')
    
    
    @app.route('/index', methods=['GET', 'POST'])
    def index():
        return '123'
    
    
    if __name__ == '__main__':
        app.run()

    二、路由

    1、添加路由的两种方式,通常使用方式一

    from flask import Flask
    app = Flask(__name__)
    
    
    # 路由方式一
    @app.route('/index', methods=['GET', 'POST'])
    def index():
        return 'index'
    
    
    # 路由方式二
    def order():
        return 'order'
    app.add_url_rule('/order', view_func=order)
    
    
    if __name__ == '__main__':
        app.run()

    2、反向解析:

    3、路由系统

    @app.route('/user/<username>')

    @app.route('/post/<int:post_id>')

    @app.route('/post/<float:post_id>')

    @app.route('/post/<path:path>')

    @app.route('/login', methods=['GET', 'POST'])

    常用路由系统有以上五种,所有的路由系统都是基于一下对应关系来处理:

    DEFAULT_CONVERTERS = {
        'default':          UnicodeConverter,
        'string':           UnicodeConverter,
        'any':              AnyConverter,
        'path':             PathConverter,
        'int':              IntegerConverter,
        'float':            FloatConverter,
        'uuid':             UUIDConverter,
    }

    自定义转换器支持正则:

    from flask import Flask, url_for
    from werkzeug.routing import BaseConverter
    
    app = Flask(import_name=__name__)
    
    
    class RegexConverter(BaseConverter):
        """
        自定义URL匹配正则表达式
        """
        def __init__(self, map, regex):
            super(RegexConverter, self).__init__(map)
            self.regex = regex
    
        def to_python(self, value):
            """
            路由匹配时,匹配成功后传递给视图函数中参数的值
            """
            return int(value)
    
        def to_url(self, value):
            """
            使用url_for反向生成URL时,传递的参数经过该方法处理,返回的值用于生成URL中的参数
            """
            val = super(RegexConverter, self).to_url(value)
            return val
    
    
    # 添加到flask中
    app.url_map.converters['regex'] = RegexConverter
    
    
    @app.route('/index/<regex("d+"):nid>')
    def index(nid):
        print(nid)
        print(url_for('index', nid='888'))
        return 'Index'
    
    
    if __name__ == '__main__':
        app.run()
    View Code
  • 相关阅读:
    阿里知识图谱首次曝光:每天千万级拦截量,亿级别全量智能审核
    LSTM简介以及数学推导(FULL BPTT)
    深度学习算法索引(持续更新)
    学界 | Yann LeCun新作,中日韩文本分类到底要用哪种编码?
    Android 常见内存泄漏的解决方式
    集成支付宝支付
    【4.29安恒杯】writeup
    sdut 3-7 类的友元函数的应用
    Linux下libsvm的安装及简单练习
    iOS 使用腾讯地图显示用户位置注意事项
  • 原文地址:https://www.cnblogs.com/zhangguosheng1121/p/14603945.html
Copyright © 2020-2023  润新知