专栏首页PythonFlask-配置与调试

Flask-配置与调试

配置管理

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

app = Flask(__name__)
app.config['DEBUG'] = True

app.config是flask.config.Config类的实例,继承自Python内置数据结构dict,所以可以使用update方法:

app.config.update(
    DEBUG = True,
    ...
)

app.config内置的全部配置变量可以参看Builtin Configuration Values。如果设置选项很多,想要集中管理设置项,应该将他们存放到一个文件里面。app.config支持多种更新配置的方式。假设现在有个叫做settings.py的配置文件,其中的内容如下:

A = 1

可以选择如下三种方式加载:

  • 通过配置文件加载
# 通过模块名的字符串
app.config.from_object('settings')  

# 或者:
import settings
app.config.from_object(settings)
  • 通过文件名字加载。但是不限于只使用.py后缀的文件名
# slient=True该文件不存在时不抛异常,返回False,默认是会抛出异常
app.config.from_pyfile('settings.py',slient=True)

总结

==========方式一:============
 app.config['SESSION_COOKIE_NAME'] = 'session_lvning'  #这种方式要把所有的配置都放在一个文件夹里面,看起来会比较乱,所以选择下面的方式
==========方式二:==============
app.config.from_pyfile('settings.py')  #找到配置文件路径,创建一个模块,打开文件,并获取所有的内容,再将配置文件中的所有值,都封装到上一步创建的配置文件模板中

print(app.config.get("CCC"))
=========方式三:对象的方式============
 import os 
 os.environ['FLAKS-SETTINGS'] = 'settings.py'
 app.config.from_envvar('FLAKS-SETTINGS') 

===============方式四(推荐):字符串的方式,方便操作,不用去改配置,直接改变字符串就行了 ==============
app.config.from_object('settings.DevConfig')

----------settings.DevConfig----------
from app import app
class BaseConfig(object):
    NNN = 123  #注意是大写
    SESSION_COOKIE_NAME = "session_sss"

class TestConfig(BaseConfig):
    DB = "127.0.0.1"

class DevConfig(BaseConfig):
    DB = "52.5.7.5"

class ProConfig(BaseConfig):
    DB = "55.4.22.4"

  要想在视图函数中获取配置文件的值,都是通过app.config来拿。但是如果视图函数和Flask创建的对象app不在一个模块。就得通过导入来拿。可以不用导入。直接导入一个current_app,这个就是当前的app对象,用current_app.config就能查看到了当前app的所有的配置文件

from flask import Flask,current_app

@app.route('/index',methods=["GET","POST"])
def index():
    print(current_app.config)   #当前的app的所有配置
    session["xx"] = "fdvbn"
    return "index"

调试模式

虽然app.run()这样的方式适用于启动本地的开发服务器,但是每次修改代码后都要手动重启的话,既不方便也不够优雅。如果启用了调试模式,服务器会在代码修改后自动重新载入,并在发生错误时提供一个能获得错误上下文及可执行代码的调试页面。 有两种途径来启动调试模式:

  • 直接在应用对象上设置:
app.debug = True
app.run()
  • 作为run的参数传入:
app.run(debug=True)

需要注意,开启调试模式会成为一个巨大的安全隐患,因此他绝对不能用于生产环境中。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Flask中无法在其他函数中查询Sqlachemy的解决办法

    方式一 直接实例化app 不要写create_app函数了,在启动文件中直接导入app对象:

    用户1214487
  • Flask快速入门,知识整理

    一、Flask介绍(轻量级的框架,非常快速的就能把程序搭建起来)   Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服...

    用户1214487
  • linux每日命令(38):iostat命令

    Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统...

    用户1214487
  • 慕课网Flask高级编程实战-4.flask核心机制

    在 3.8节我们通过db.create_all(app=app)的方式解决了working outside application context的错误,下面我...

    Meet相识
  • 109个提高App下载量的营销策略(上)

    引言:本文介绍了如何提高APP下载量的109个适用的营销策略中的前36个策略,本系列全长共109个策略。

    iCDO互联网数据官
  • App出海又遇困局,乘风破浪的互联网企业何时上岸

    App Annie统计显示,2020年6月全球热门应用,TikTok(抖音海外版)继续霸榜,无论是下载量还是收入依旧稳拿第一。今年受到新冠疫情的影响,在一二季度...

    APICloud
  • 实战演练:PostgreSQL在线扩容

    墨墨导读:最近被问到PG在线扩容的问题,本文整理了整个过程,之前写过一篇文章,供大家参考:《PosgreSQL三种表空间使用方式》https://www.mod...

    数据和云
  • 网站搭建-django-学习成绩管理-01-新建app

    系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3....

    zishendianxia
  • mig IP用户读写时序

    FPGA开源工作室将通过五篇文章来给大家讲解xilinx FPGA 使用mig IP对DDR3的读写控制,旨在让大家更快的学习和应用DDR3。

    FPGA开源工作室
  • flask gunicorn 部署

    workers = multiprocessing.cpu_count() * 2 + 1

    用户5760343

扫码关注云+社区

领取腾讯云代金券