博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
flask flask参数 app 配置
阅读量:5236 次
发布时间:2019-06-14

本文共 4464 字,大约阅读时间需要 14 分钟。

实例化Flask 的参数   及 对app  的配置

lask 是一个非常灵活且短小精干的web框架 , 那么灵活性从什么地方体现呢?

 Flask配置

app.config["DEBUG"] = True 

代码只要发生改动,自动重启Flask程序(app.run)

在控制台打印的信息非常全面

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

app.default_config

DEBUG --- 编码阶段 代码重启 日志输出级别很低 页面中会显示错误 错误代码
TESTING --- 测试阶段 日志输出级别较高 无限接近线上环境

 

Flask的配置就是在 app.config 中添加一个键值对,但是你存进去的键必须是config中应该存在的,如果不再存在的话,它会默认无用,就这么放着

{    'DEBUG': False,  # 是否开启Debug模式    'TESTING': False,  # 是否开启测试模式    'PROPAGATE_EXCEPTIONS': None,  # 异常传播(是否在控制台打印LOG) 当Debug或者testing开启后,自动为True    'PRESERVE_CONTEXT_ON_EXCEPTION': None,  # 一两句话说不清楚,一般不用它    'SECRET_KEY': None,  # 之前遇到过,在启用Session的时候,一定要有它    'PERMANENT_SESSION_LIFETIME': 31,  # days , Session的生命周期(天)默认31天    'USE_X_SENDFILE': False,  # 是否弃用 x_sendfile    'LOGGER_NAME': None,  # 日志记录器的名称    'LOGGER_HANDLER_POLICY': 'always',    'SERVER_NAME': None,  # 服务访问域名    'APPLICATION_ROOT': None,  # 项目的完整路径    'SESSION_COOKIE_NAME': 'session',  # 在cookies中存放session加密字符串的名字    'SESSION_COOKIE_DOMAIN': None,  # 在哪个域名下会产生session记录在cookies中    'SESSION_COOKIE_PATH': None,  # cookies的路径    'SESSION_COOKIE_HTTPONLY': True,  # 控制 cookie 是否应被设置 httponly 的标志,    'SESSION_COOKIE_SECURE': False,  # 控制 cookie 是否应被设置安全标志    'SESSION_REFRESH_EACH_REQUEST': True,  # 这个标志控制永久会话如何刷新    'MAX_CONTENT_LENGTH': None,  # 如果设置为字节数, Flask 会拒绝内容长度大于此值的请求进入,并返回一个 413 状态码    'SEND_FILE_MAX_AGE_DEFAULT': 12,  # hours 默认缓存控制的最大期限    'TRAP_BAD_REQUEST_ERRORS': False,    # 如果这个值被设置为 True ,Flask不会执行 HTTP 异常的错误处理,而是像对待其它异常一样,    # 通过异常栈让它冒泡地抛出。这对于需要找出 HTTP 异常源头的可怕调试情形是有用的。    'TRAP_HTTP_EXCEPTIONS': False,    # Werkzeug 处理请求中的特定数据的内部数据结构会抛出同样也是“错误的请求”异常的特殊的 key errors 。    # 同样地,为了保持一致,许多操作可以显式地抛出 BadRequest 异常。    # 因为在调试中,你希望准确地找出异常的原因,这个设置用于在这些情形下调试。    # 如果这个值被设置为 True ,你只会得到常规的回溯。    'EXPLAIN_TEMPLATE_LOADING': False,    'PREFERRED_URL_SCHEME': 'http',  # 生成URL的时候如果没有可用的 URL 模式话将使用这个值    'JSON_AS_ASCII': True,    # 默认情况下 Flask 使用 ascii 编码来序列化对象。如果这个值被设置为 False ,    # Flask不会将其编码为 ASCII,并且按原样输出,返回它的 unicode 字符串。    # 比如 jsonfiy 会自动地采用 utf-8 来编码它然后才进行传输。    'JSON_SORT_KEYS': True,    #默认情况下 Flask 按照 JSON 对象的键的顺序来序来序列化它。    # 这样做是为了确保键的顺序不会受到字典的哈希种子的影响,从而返回的值每次都是一致的,不会造成无用的额外 HTTP 缓存。    # 你可以通过修改这个配置的值来覆盖默认的操作。但这是不被推荐的做法因为这个默认的行为可能会给你在性能的代价上带来改善。    'JSONIFY_PRETTYPRINT_REGULAR': True,    'JSONIFY_MIMETYPE': 'application/json',    'TEMPLATES_AUTO_RELOAD': None,}

 

以上这些Key,都可以被改写,当然他们也都是有默认值存在的,如果没有特殊情况,不要改写它的默认值

 

修改配置的方式大约是两种

1.直接对app.config进行修改

app.config["DEBUG"] = True

2.使用类的方式导入

   这叫做类导入配置

首先要有一个settings.py的文件

class Debugsetting(object):    DEBUG = True    SECRET_KEY = 'AAA'    SESSION_COOKIE_NAME = 'debug session'class TestingSetting(object):    TESTING = True    SECRET_KEY = "BBB"    SESSION_COOKIE_NAME = "testing session"

然后我们在Flask的启动文件中就可以这么写

from flask import Flask, jsonifyfrom settings import Debugsettingfrom settings import TestingSettingapp = Flask(__name__)# app.config.from_object(Debugsetting)app.config.from_object(TestingSetting)@app.route("/info", methods=["GET", "POST"])def info():    return jsonify({
'a': 12})if __name__ == '__main__': print(app.config) app.run('0.0.0.0', 5000)

 

那么在Flask实例化的时候,传递的参数是什么呢?

其实可以理解为对Flask实例进行的初始配置

static_folder = 'static',  # 静态文件目录的路径 默认当前项目中的static目录static_host = None,  # 远程静态文件所用的Host地址,默认为空static_url_path = None,  # 静态文件目录的url路径 默认不写是与static_folder同名,远程静态文件时复用# host_matching是否开启host主机位匹配,是要与static_host一起使用,如果配置了static_host, 则必须赋值为True# 这里要说明一下,@app.route("/",host="localhost:5000") 就必须要这样写# host="localhost:5000" 如果主机头不是 localhost:5000 则无法通过当前的路由host_matching = False,  # 如果不是特别需要的话,慎用,否则所有的route 都需要host=""的参数subdomain_matching = False,  # 理论上来说是用来限制SERVER_NAME子域名的,但是目前还没有感觉出来区别在哪里template_folder = 'templates'  # template模板目录, 默认当前项目中的 templates 目录instance_path = None,  # 指向另一个Flask实例的路径instance_relative_config = False  # 是否加载另一个实例的配置root_path = None  # 主模块所在的目录的绝对路径,默认项目目录

static_folder   静态文件目录的路径   static_url_path   静态文件目录的url  路径

from flask import Flask, jsonify, render_templateapp = Flask(__name__, static_folder='statics', static_url_path="/aaa")@app.route("/info", methods=["GET", "POST"])def info():   return render_template("info.html")if __name__ == '__main__':    # print(app.config)    app.run('0.0.0.0', 5000)
    
Title info 界面

常用参数

static_folder = 'static',  # 静态文件目录的路径 默认当前项目中的static目录static_url_path = None,  # 静态文件目录的url路径 默认不写是与static_folder同名,远程静态文件时复用template_folder = 'templates'  # template模板目录, 默认当前项目中的 templates 目录

 

转载于:https://www.cnblogs.com/XLHIT/p/11171454.html

你可能感兴趣的文章
解决 sublime text3 运行python文件无法input的问题
查看>>
javascript面相对象编程,封装与继承
查看>>
Atlas命名空间Sys.Data下控件介绍——DataColumn,DataRow和DataTable
查看>>
Java中正则表达式的使用
查看>>
算法之搜索篇
查看>>
新的开始
查看>>
java Facade模式
查看>>
NYOJ 120校园网络(有向图的强连通分量)(Kosaraju算法)
查看>>
SpringAop与AspectJ
查看>>
Leetcode 226: Invert Binary Tree
查看>>
http站点转https站点教程
查看>>
解决miner.start() 返回null
查看>>
bzoj 2007: [Noi2010]海拔【最小割+dijskstra】
查看>>
BZOJ 1001--[BeiJing2006]狼抓兔子(最短路&对偶图)
查看>>
C# Dynamic通用反序列化Json类型并遍历属性比较
查看>>
128 Longest Consecutive Sequence 一个无序整数数组中找到最长连续序列
查看>>
定制jackson的自定义序列化(null值的处理)
查看>>
auth模块
查看>>
javascript keycode大全
查看>>
前台freemark获取后台的值
查看>>