flask学习之配置文件的加载和动态url的使用

七行代码实现一个flask app

from flask import Flask

app = Flask(__name__)

@app.route(‘/‘)
def helloworld():
    return ‘helloworld‘

if __name__ == ‘__main__‘:
    app.run()

app.run()只适合调试,不适合生产环境使用,生产环境应该使用Gunicorn和uWSGI启动


配置管理

  • app.config是flask.config.Config类的实例,该类继承自Python内置数据结构dict,可以使用dict的方式添加配置

    1. app.config[‘DEBUG‘]=True
    2. 使用update方法
        app.config.update(
        DEBUG=True,
        SECREY_KEY=‘HELLOWORLD‘,
        )
  • 一般项目的配置都统一放在一个settings.py文件中,可以集中管理配置项
    # settings.py
    class Develop():
        DEBUG = True
    
    class Product():
    
        DEBUG = False
    
    develop = Develop()
    
    product = Product()
    # app.py
    from flask import Flask
    from settings import develop,product
    
    app = Flask(__name__)
    
    app.config.from_object(product)
  • 通过文件名加载,了解即可
    • app.config.from_pyfile(‘settings.py‘,slient=True)
  • 通过环境变量加载,了解即可
    • app.config.from_envvar(‘settings_path‘)

动态url的配置

  • flask中定义了url转换器converter,在使用时需要实际特殊字段标记
  • <name>不指定参数类型or<converter_name:name>指定参数类型
    @app.route(‘/item/<id>/‘)
    def detali(id):
    return id

自定义url转换器

  • 继承自BaseConverter

    from werkzeug.routing import BaseConverter
    
    class CustomConverter(BaseConverter):
        def __init__(self,url_map,regex):
            super(CustomConverter, self).__init__(url_map)
            self.regex = regex
  • 使用
    from utils.custom_converter import CustomConverter
    
    app = Flask(__name__)
    
    app.config.from_object(develop)
    app.url_map.converters[‘re‘] = CustomConverter # 添加到converter列表中
    
    @app.route(‘/hello/<re("[1-9]{2}"):cus>/‘) # re("regex") 定义匹配规则
    def custom(cus):
        return cus

原文地址:https://www.cnblogs.com/zjhlll/p/9162582.html

时间: 2024-08-29 04:53:58

flask学习之配置文件的加载和动态url的使用的相关文章

spring-boot学习五:Spring boot配置文件的加载位置

1.配置文件的加载位置 spring boot启动的时候会加载全局配置文件application.properties(或者application.yaml)文件,这个文件默认的位置在: 即classpath:/的相对路径下.这个配置文件除了可以在resource下之外,还可以在如下位置: 在classpath:/config/即resources/config下: 在当前工程文件的config文件夹下: 在当前工程的相对路径下: 2.配置文件的加载顺序 以上所说的四个文件的优先级如下: app

thinkphp学习笔记9—自动加载

1.命名空间自动加载 在3.2版本中不需要手动加载类库文件,可以很方便的完成自动加载. 系统可以根据类的命名空间自动定位到类库文件,例如定义了一个类Org\Util\Auth类: namespace Org\Util; class Auth { } 保存到ThinkPHP/Library/Org/Util/Auth.class.php 这样我们就可以直接实例化了, new \Org\Util\Auth(); 实例化之后系统会自动加载 ThinkPHP/Library/Org/Util/Auth.

ios网络学习------4 UIWebView的加载本地数据的三种方式

UIWebView是IOS内置的浏览器,可以浏览网页,打开文档  html/htm  pdf   docx  txt等格式的文件.  safari浏览器就是通过UIWebView做的. 服务器将MIME的标识符等放入传送的数据中告诉浏览器使用那种插件读取相关文件. uiwebview加载各种本地文件(通过loadData方法): - (void)viewDidLoad { [super viewDidLoad]; [self setupUI]; NSString *path = [[NSBund

libgdx学习记录16——资源加载器AssetManager

AssetManager用于对游戏中的资源进行加载.当游戏中资源(图片.背景音乐等)较大时,加载时会需要较长时间,可能会阻塞渲染线程,使用AssetManager可以解决此类问题. 主要优点: 1. 大多数资源加载器AssetLoader都是异步加载,可以避免阻塞渲染线程. 2. 通过引用计数来进行释放资源. 3. 通过一个对象来管理所有其他资源. 主要函数: load(path,type)加载某个路径的资源文件,后面type指定所要加载的资源类型.这个函数只是将资源文件加入到资源队列中,并不会

Thinkphp配置文件的加载

若应用的配置文件比较大,可以分成几个单独的配置文件或者需要加载额外的配置文件的话,可以采用扩展配置或者动态配置. 配置文件的加载顺序为: 惯例配置->应用配置->模式配置->调试配置->状态配置->模块配置->扩展配置->动态配置 在没有生效的情况下,后面的配置文件会覆盖前面的同名配置,故优先从右到左. 惯例配置:ThinkPHP/Conf/convention.php 应用配置:Application/Common/Conf/config.php 模式配置:Ap

web.xml中如何设置配置文件的加载路径

web应用程序通过Tomcat等容器启动时,会首先加载web.xml文件,通常我们工程中的各种配置文件,如日志.数据库.spring的文件等都在此时被加载,下面是两种常用的配置文件加载路径,即配置文件可以放到 SRC目录下或者可以放到WEB-INF根目录下 第一种在web.xml中这样配置: <context-param> <param-name >contextConfigLocation </param-name > <param-value >clas

用Go自己实现配置文件热加载功能

说到配置文件热加载,这个功能在很多框架中都提供了,如beego,实现的效果就是当你修改文件后,会把你修改后的配置重新加载到配置文件中,而不用重启程序,这个功能在日常中还是非常实用的,毕竟很多时候,线上的配置文件不是想改就能改的. 这次就自己实现一个配置文件的热加载功能的包,并通过一个简单的例子对完成的包进行使用验证 配置文件热加载包的是实现 其实整体的思路还是比较简单的,当获取配置文件内容后,会开启一个goroutine,去 循环读配置文件,当然这里不可能不限制的一直循环,而是设置了一个定时器,

从源码来理解slf4j的绑定,以及logback对配置文件的加载

https://www.cnblogs.com/youzhibing/p/6849843.html 编译期间,完成slf4j的绑定已经logback配置文件的加载.slf4j会在classpath中寻找org/slf4j/impl/StaticLoggerBinder.class(会在具体的日志框架如log4j.logback等中存在),找到并完成绑定:同时,logback也会在classpath中寻找配置文件,先找logback.configurationFile.没有则找logback.gr

Spring Boot配置文件的加载顺序

配置文件的加载顺序, 后加载的会覆盖先加载的:也就是properties配置文件的内容会替换掉.yml及.yaml文件的内容 原文地址:https://www.cnblogs.com/niwotaxuexiba/p/10849376.html