配置管理

复杂的项目需要配置各种配置环境,如果设置项缺少可以直接硬编码进来,比如下面的方式:

app.config['DEBUG']=True
app.config['SECRET_KEY'] = 'hard to guess string'

 app.config 是 app.config.Config的实例,Config类继承了python内置的dict,所以我们可以使用dict的update方法

app.config.update(
DEBUG=True,
SECRET_KEY = 'hard to guess string'
)

  app.config 内置的配置变量可以参考Configuration Handling 如果设置的选项很多,有想要集中管理这些设置项,我们可以把这些配置项选择放置在一个文件中,app.config 支持多种更新配置的方式。假设我们将我们的配置项防止的settings.py这个文件中,内容如下:

DEBUG=True,
SECRET_KEY = 'hard to guess string'

我们可以选择一下三种方式加载文件

1. 通过配置文件加

app.config.from_object('settings') # 通过字符串模块名字导入配置文件

import settings

app.config.from_object(settings) #通过导入文件后直接传入模块对象

2.通过文件名字加载,直接传入文件名字,单是不限于只使用.py后缀的文件

# 默认当配置文件不存在时候,会抛出异常,使用silent=True
# 的时候只是返回False,但是不会抛出异常
app.config.from_pyfile('settings.py',silent=True)

3.通过环境变量加载,这种方式依然支持silent参数,获得路径后其实还是使用了from_pyfile的方式加载

#
# 在python环境变量中设置
# >export USERAPPLICATION_SETTINGS = 'settings.py'
app.config.from_envvar('USERAPPLICATION_SETTINGS')

 调试模式 

我们每次使用 app.run 方式开启本地应用,但是当我们在开发中修改了代码,都要手动的重启应用,这样的方式既不方便也不优雅。其实flask已经帮我们解决了开发模式代码修改后自动重启应用的功能,并在发生错误的时候,提供一个能获得错误上下文及可执行代码的调试页面。

两种开启调试模式的方法

1 直接在应用对象上设置

app.debug = True
app.run()

2. 作为run的参数传入

app.run(debug=True

注意事项:

    开启调试模式会成为一个巨大的安全隐患,因此决不能用于生产环境中。

 

flask配置管理的更多相关文章

  1. 从源码看Flask框架配置管理

    1 引言 Flask作为Python语言web开发的三大顶梁柱框架之一,对于配置的管理当然必不可少.一个应用从开发到测试到最后的产品发布,往往都需要多种不同的配置,例如是否开启调试模式.使用哪个数据库 ...

  2. Flask源码学习—config配置管理

    自己用Flask做了一个博客(www.hbnnlove.sinaapp.com),之前苦于没有对源码解析的文档,只能自己硬着头皮看.现在我把我自己学习Flask源码的收获写出来,也希望能给后续要学习F ...

  3. 【Flask】 项目结构说明

    项目结构 Flask的一大优势就是其极其轻量化.但是也需要注意到,如果我们要用Flask做一个大项目的话,把所有代码写在一个文件里肯定是不合适的.非常难以维护.但是和Django这种框架又不一样,Fl ...

  4. Python flask中的配置

    当你开始学习Flask时,配置看上去是小菜一碟.你仅仅需要在config.py定义几个变量,然后万事大吉. 然而当你不得不管理一个生产上的应用的配置时,这一切将变得棘手万分. 你不得不设法保护API密 ...

  5. Flask的配置与路由

    配置管理 flask中的配置文件是一个flask.config.Config对象(继承字典),默认配置为:    {        'DEBUG':                    get_de ...

  6. 欢迎来到 Flask 的世界

    欢迎来到 Flask 的世界 欢迎阅读 Flask 的文档.本文档分成几个部分,我推荐您先读 < 安装 >,然后读< 快速上手 >.< 教程 > 比快速上手文档更详 ...

  7. flask之配置文件的加载和动态url的使用

    七行代码实现一个flask app from flask import Flask app = Flask(__name__) @app.route('/') def helloworld(): re ...

  8. flask+sqlite3+echarts2+ajax数据可视化

    前提: 准备Python + Flask+Sqlite3的平台环境(windows系统) 前面一节介绍flask怎么安装了,剩下sqlite3下载后解压,然后环境变量添加解压路径就行了 附加下载地址: ...

  9. flask+sqlite3+echarts2+ajax数据可视化报错:UnicodeDecodeError: 'utf8' codec can't decode byte解决方法

    flask+sqlite3+echarts2+ajax数据可视化报错: UnicodeDecodeError: 'utf8' codec can't decode byte 解决方法: 将 py文件和 ...

随机推荐

  1. JQuery插件开发标准写法

    ;//step01 定义JQuery的作用域 (function ($) { //step03-a 插件的默认值属性 var defaults = { prevId: 'prevBtn', prevT ...

  2. 服务器固件测试--PCI设备的介绍(集成网卡和外插网卡)

    今天2017年9月26号,快三个月的时间,是该梳理一下,我来到这个岗位学到的东西. 网卡是什么 网卡分为俩大类 板载的集成网卡和外插的网卡.外插的网卡又分为很多种. 板载的集成网卡 外插的网卡分为 I ...

  3. flask中的session,render_template()第二和参数是字典

    1. 设置一个secret_key 2.验证登入后加上session,这是最简单,不保险 . 3.注意render_template传的参数是字典

  4. Idea中右边的maven projects窗口找不到了如何调出来

    关于Idea中右边的maven  projects窗口找不到了如何调出来? 具体的idea版本我不太清楚,我用的是2016版,其他版本应该也是一样的. 首先idea自带了maven控件,不像Eclip ...

  5. JS中数组的迭代方法和归并方法

    昨天总结的JavaScript中的数组Array方法 数组的迭代方法 ES5中为数组定义了5个迭代方法.每个方法都要接收两个参数:要在每一项上面运行的函数和(可选的)运行该函数的作用域对象---影响t ...

  6. 浅谈Async/Await

    概要 在很长一段时间里面,FE们不得不依靠回调来处理异步代码.使用回调的结果是,代码变得很纠结,不便于理解与维护,值得庆幸的是Promise带来了.then(),让代码变得井然有序,便于管理.于是我们 ...

  7. iOS 让CoreData更简单些

    原文:http://www.cocoachina.com/ios/20170421/19096.html 前言 本文并不是CoreData从入门到精通之类的教程, 并不会涉及到过多的原理概念描述, 而 ...

  8. 【NOIP模拟】cut

    Description F大爷热爱切树.今天他找到一棵黑白树,不到两秒钟,F大爷就把这棵树切掉了.已知原先树上共n个点,每个点都是黑点或者白点,F大爷切去若干条边后,分成的若干个连通子树中每块恰有一个 ...

  9. CPU31X-2DP通过DP网络连接远程IO站

    一.远程IO站介绍 二.该DP网络系统结构 三.组态DP主站 1.组态机架硬件配置 2.设置profibus属性,主站地址为2,如下图 3.完成主站组态 四.组态远程IO从站ET200M 1.接口模块 ...

  10. AdaBoost对实际数据分类的Julia实现

    写在前面 AdaBoost是机器学习领域一个很重要很流行的算法,而Julia是一门新兴的发展迅速的科学计算语言.本文将从一个实际例子出发,展示如何用Julia语言实现AdaBoost算法. 什么是Ad ...