flask之Flask、config配置
flask_config.py
'''
flask的配置:
1.flask项目初始化配置:
(1)app=Flask(__name__)#初始化声明falsk项目为当前py文件,app应用变量名可以更改
(2)Flask()参数配置:
①template_folder=''指定静态模板文件页面所在文件目录,不指定默认为templates目录
②static_folder=''指定静态文件所在的文件目录如staticfiles,不指定默认为static目录
在默认静态文件目录中,模板页面中的请求路径直接写相对路径,例如:src="/static/1.png"即可直接请求返回
在更换了自定义静态文件目录时,以下两种方式可以解决静态文件返回问题:
a.增加参数配置static_url_path='/static',相当于是请求路径src="/static/1.png"不变,将请求路径/static映射到自定义的静态文件目录staticfiles
b.直接修改模板文件中的路径,例如将src="/static/1.png"改为src="/staticfiles/1.png"(不推荐使用) 2.app.config[]的项目实例配置:
(1)常用配置:
"DEBUG": None, #debug模式的设置,开发环境用
"TESTING": False, #测试模式的设置,无限接近线上环境
"SECRET_KEY": None, #session秘钥配置
"PERMANENT_SESSION_LIFETIME": timedelta(days=31), #session有效期时间的设置
"SESSION_COOKIE_NAME": "session", #cookies中存储的session字符串的键
"JSONIFY_MIMETYPE": "application/json", #设置jsonify响应时返回的contentype类型
(2)app.config.from_object(self,object)实例化对象进行配置
以DEBUG和TESTING模式设置切换为例:
①自定义一个模块如settings.py
②创建两种模式的不同类,配置相应属性参数
③导入settings.py中的模式类,通过app.config.from_object(self,object)进行配置
''' from flask import Flask, render_template #1.flask项目初始化配置
#templates是flask默认的模板文件目录,static是falsk默认的静态文件路径,只需要配置即可
# ①template_folder=''指定静态模板文件页面所在文件目录,不指定默认为templates目录
# ②static_folder=''与static_url_path='、static'的配合使用
app=Flask(__name__,template_folder='html',static_folder='staticfiles',static_url_path='/static') @app.route('/index')
def index():
return render_template('index0.html') #2.app.config[]的项目实例配置:源码中default_config字典
'''
default_config = ImmutableDict(
{
"ENV": None, #虚拟环境,当前项目运行环境
"DEBUG": None, #debug模式的设置,开发环境用,自动重启项目,日志级别低,报错在前端显示具体代码
"TESTING": False, #测试模式的设置,无限接近线上环境,不会重启项目,日志级别较高,不会在前端显示错误代码
"PROPAGATE_EXCEPTIONS": None,
"PRESERVE_CONTEXT_ON_EXCEPTION": None,
"SECRET_KEY": None, #session秘钥配置
"PERMANENT_SESSION_LIFETIME": timedelta(days=31), #session有效期时间的设置
"USE_X_SENDFILE": False,
"SERVER_NAME": None, #主机名设置
"APPLICATION_ROOT": "/", #应用根目录配置
"SESSION_COOKIE_NAME": "session", #cookies中存储的session字符串的键
"SESSION_COOKIE_DOMAIN": None, #session作用域
"SESSION_COOKIE_PATH": None, #session作用的请求路径
"SESSION_COOKIE_HTTPONLY": True, #session是否只支持http请求方式
"SESSION_COOKIE_SECURE": False, #session安全配置
"SESSION_COOKIE_SAMESITE": None,
"SESSION_REFRESH_EACH_REQUEST": True,
"MAX_CONTENT_LENGTH": None,
"SEND_FILE_MAX_AGE_DEFAULT": timedelta(hours=12),
"TRAP_BAD_REQUEST_ERRORS": None,
"TRAP_HTTP_EXCEPTIONS": False,
"EXPLAIN_TEMPLATE_LOADING": False,
"PREFERRED_URL_SCHEME": "http",
"JSON_AS_ASCII": True,
"JSON_SORT_KEYS": True,
"JSONIFY_PRETTYPRINT_REGULAR": False,
"JSONIFY_MIMETYPE": "application/json", #设置jsonify响应时返回的contentype类型
"TEMPLATES_AUTO_RELOAD": None,
"MAX_COOKIE_SIZE": 4093,
}
)
''' #(1)一般开发写测试需要经常切换debug和测试模式
# app.config['DEBUG']=True #debug模式,日志级别低,一般在开发环境用,报错直接回在前端页面显示,具体到代码
# app.config['TESTING']=True #测试模式,日志级别较高,无限接近线上环境,报错只在后端显示具体错误,前端页面之后提示有错,不会具体显示 @app.route('/test')
def test():
print(int('sdf'))#此行代码运行会报错,开启DEBUG模式,直接在前端页面显示错误代码,而在TESTING模式下前端页面之会提示错误,并不会有具体代码
return '直接通过app.config[]对DEBUG或TESTING模式进行设置!' #(2)通过自定义模块类来实现debug和测试模式的配置切换(自定义模式切换模块seetings.py)
from settings import DebugMode
from settings import TestingMode
#使用app.config.from_object(self,object)进行DEBUG或TESTING模式的设置
# app.config.from_object(DebugMode) #开启DEBUG模式,直接在前端页面显示错误代码
app.config.from_object(TestingMode) #而在TESTING模式下前端页面之会提示错误,并不会有具体代码 @app.route('/two_modes')
def mode():
print(int('sdf11'))#此行代码运行会报错
return '通过app.config.from_object(self,object)进行DEBUG或TESTING模式的设置!' if __name__ == '__main__':
app.run()
index0.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>index</title>
</head>
<body>
<h2>项目中指定模板文件目录html中的index页面,默认不指定为templates模板目录</h2> <div><h2>项目中指定静态文件目录staticfiles返回当前图片,默认不指定为static静态文件目录</h2>
<img src="/static/1.png" alt=""></div>
</body>
</html>
seetings.py
class DebugMode(object):
DEBUG=True
SECRET_KEY='SGHJK34H5JKP5OJO6J@#$%^&'
SESSION_COOKIE_NAME='NOT SESSION' class TestingMode(object):
TESTING=True
SECRET_KEY='#$%^&*(*&^%$%^&*(*&^&*()_)(*SGHJK34H5JKP5OJO6J@#$%^&'
SESSION_COOKIE_NAME='MD5_DATA'
flask之Flask、config配置的更多相关文章
- Flask系列05--Flask的配置config
一.flask配置 示例说明, 就是使用config进行配置 from flask import Flask app = Flask(__name__) # type:Flask app.conf ...
- flask的config配置和给实例化传入参数
灵活性主要体现在配置上,需要什么就配置什么 from flask import Flask app = Flask(__name__) # type:Flask # 调试模式:是否开启调试模式并捕获异 ...
- 【flask】flask项目配置 app.config
[理论] 在很多情况下,你需要设置程序的某些行为,这时你就需要使用配置变量.在Flask中,配置变量就是一些大写形式的Python变量, 你也可以称之为配置参数或配置键.使用统一的配置变量可以避免在程 ...
- Flask01 初识flask、flask配置
1 什么是flask Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 . 百度百科:点击前往 中文文档: ...
- [Python]Flask 源代码分析-config
flask有一个Config类,含from_object, from_pyfile, from_environ等载入命名空间的方法.载入命名空间的本质是载入一个dict[key]=value的字典. ...
- flask --- 02. 路由, 初始化配置,蓝图
一.Flask 路由 1.添加路由的方式 ① ② 实例: ① @app.route("/my_de") def detail() ② def detail() app.add_ur ...
- django和flask关于oralce数据库配置
Django中关于Oracle数据库配置 # 使用SERVICE_NAME DATABASES = { 'default': { 'ENGINE': 'django.db.backends.oracl ...
- Flask基础(04)-->相关配置参数
# 导入Flask from flask import Flask from flask import config # 创建Flask的应用程序 app = Flask(__name__) #=== ...
- flask 第八篇 实例化flask时的参数配置
Flask 是一个非常灵活且短小精干的web框架 , 那么灵活性从什么地方体现呢? 有一个神奇的东西叫 Flask配置 , 这个东西怎么用呢? 它能给我们带来怎么样的方便呢? 首先展示一下: from ...
随机推荐
- 2019-2020-1 20199328《Linux内核原理与分析》第七周作业
分析Linux内核创建一个新进程的过程 2019/10/28 18:34:58 笔记部分 首先是查看进程描述符(用来描述进程,其代码比较庞大)的一些内容 系统调用回顾 fork.vfork.clone ...
- Spring Security OAuth2 笔记(一)
关于 refresh_token refresh_token 主要是用来在 access_token 快要过期的时候,对 access_token 进行一个刷新,生成一个新的 access_token ...
- Nginx重写请求后将url?后的参数去除
2019独角兽企业重金招聘Python工程师标准>>> 使用?结尾 注意,关键点就在于"?"这个尾缀.重定向的目标地址结尾处如果加了?号,则不会再转发传递 ...
- STL 训练 POJ - 1862 Stripies
Description Our chemical biologists have invented a new very useful form of life called stripies (in ...
- VS Code 全部快捷键一览表(巨TM全)
常用 General 按 Press 功能 Function Ctrl + Shift + P,F1 显示命令面板 Show Command Palette Ctrl + P 快速打开 Quick O ...
- 请不要浪费你的生命,一文多发推广就用它(OpenWrite)
你我的共同困惑 你是否跟我一样?刚开始尝试写作,自己没有名气,有以下几个困惑: 想要推广自己,想在多个平台发文? 多平台发文之后,想要看各个平台的流量如何? 有了流量,想要引流用户到自己的网站? 网站 ...
- tomcat8调优
a. tomcat的运行原理: 1. Tomcat是运行在JVM中的一个进程.它定义为[中间件],顾名思义,是一个在Java项目与JVM之间的中间容器. 2. Web项目的本质,是一大堆的资源文件和方 ...
- rsync服务端一键安装rsync脚本(非源码)
export RSYNC_PASSWORD=123 USER=rsync AUTHUSERS=bck MK=backupmk local_dir=/backup yum remove rsync &a ...
- LeetCode #188场周赛题解
A题链接 给你一个目标数组 target 和一个整数 n.每次迭代,需要从 list = {1,2,3..., n} 中依序读取一个数字. 请使用下述操作来构建目标数组 target : Push:从 ...
- 玩好百家乐需要掌握些什么技巧和打法?来自ag老玩家的实战经验心得总结
最近很多网友给我留言,说为什么学了很多技巧和打法这个游戏还是玩不好,坦白说,其实bjl想要玩得好,不是说你懂得多少技巧和掌握了多少种打法就可以的了,而是你要懂得如何把这些正确结合去运用,这些我之前都强 ...