当前位置: 首页 > news >正文

萍乡网站建设项目外包平台

萍乡网站建设,项目外包平台,优质网站的衡量标准,wordpress 获取当前时间目录2.Flask配置2.1 直接写入主脚本2.2 系统环境变量2.3 单独的配置文件2.4 多个配置类2.5 Flask内置配置2.Flask配置 我们都知道,Flask应用程序肯定是需要各种各样的配置。来满足我们不同的需求的,这样可以使我们的应用程序更加灵活。比如可以根据需要…

目录

  • 2.Flask配置
    • 2.1 直接写入主脚本
    • 2.2 系统环境变量
    • 2.3 单独的配置文件
    • 2.4 多个配置类
    • 2.5 Flask内置配置

2.Flask配置

我们都知道,Flask应用程序肯定是需要各种各样的配置。来满足我们不同的需求的,这样可以使我们的应用程序更加灵活。比如可以根据需要更改不同的配置,比如调试模式开关、 密钥、数据库等。

在Flask中,有一个配置对象用来维持加载的配置值:Flask的 config 对象。 这是Flask自身放置特定配置的地方,同时也是扩展放置它们配置值的地方。但是,这里也可以放置你自己的配置 。config 实际上是字典的一个子类且能够像字典一样被修改 。

Flask中,设置自己的配置有以下几种方式。

2.1 直接写入主脚本

当你的程序很小的时候,可以直接把配置写在主脚本里

from flask import Flaskapp = Flask(__name__)
app.config['SECRET_KEY'] = 'some secret words'
app.config['DEBUG'] = True
app.config['ITEMS_PER_PAGE'] = 10

使用字典的update方法可以简化代码:

from flask import Flaskapp = Flask(__name__)
app.config.update(DEBUG=True,SECRET_KEY='some secret words',ITEMS_PER_PAGE=10
)

2.2 系统环境变量

一些重要的配置, 比如密码等 ,可以设置在系统环境变量里,又或者放到某个服务器里,用的时候下载配置文件并读取配置。 然后使用os模块的getenv()方法获取,第二个参数作为默认值:

set MAIL_USERNAME=me@greyli.com  # windows
export MAIL_USERNAME=me@greyli.com  # *unix

获取变量并写入:

import osfrom flask import Flaskapp = Flask(__name__)
app.config['MAIL_USERNAME'] = os.getenv('MAIL_USERNAME', 'me@greyli.com')

如果你使用虚拟环境,设置环境变量时注意要激活虚拟环境,同时不要给变量值加引号:

set MAIL_USERNAME=me@greyli.com  # 结果是'me@greyli.com'
set MAIL_USERNAME='me@greyli.com'  # 结果是"'me@greyli.com'"

2.3 单独的配置文件

程序逐渐变大时,配置也逐渐增多,写在主脚本里太占地方,不够优雅,这时你应该已经把表单,路由,数据库模型等等分成独立的文件了,如下,创建config.py文件。

config.py

SECRET_KEY = 'some secret words'
DEBUG = True
ITEMS_PER_PAGE = 10

在创建程序实例后使用app.config.from_object导入配置:

from flask import Flask
import configapp = Flask(__name__)
app.config.from_object(config)
# print(app.config['SECRET_KEY'])
# print(app.config['ITEMS_PER_PAGE'])@app.route('/')
def hello_world():return 'Hello World!'if __name__ == '__main__':app.run()

或使用app.config.from_pyfile导入配置:

from flask import Flask
import configapp = Flask(__name__)
app.config.from_pyfile('config.py')
print(app.config['SECRET_KEY'])
print(app.config['ITEMS_PER_PAGE'])@app.route('/')
def hello_world():return 'Hello World!'if __name__ == '__main__':app.run()

2.4 多个配置类

大型项目需要多个配置组合,比如开发时的配置,测试的配置,部署的配置……这样我们需要在配置文件里创建不同的配置类,然后在创建程序实例时引入相应的配置类。

最佳实践是创建一个存储通用配置的基类,然后为不同的使用使用场景创建新的继承基类的配置类:

如下,编写 config.py文件(这里为开发和测试创建了不同的数据库)

import os
basedir = os.path.abspath(os.path.dirname(__file__))class BaseConfig:  # 基本配置类SECRET_KEY = os.getenv('SECRET_KEY', 'some secret words')ITEMS_PER_PAGE = 10class DevelopmentConfig(BaseConfig):DEBUG = TrueSECRET_KEY = 'afasjkfnasfhas'SQLALCHEMY_DATABASE_URI = os.getenv('DEV_DATABASE_URL', 'sqlite:///' + os.path.join(basedir, 'data-dev.sqlite'))class TestingConfig(BaseConfig):TESTING = TrueSQLALCHEMY_DATABASE_URI = os.getenv('TEST_DATABASE_URL', 'sqlite:///' + os.path.join(basedir, 'data-test.sqlite'))WTF_CSRF_ENABLED = Falseconfig = {'development': DevelopmentConfig,'testing': TestingConfig,'default': DevelopmentConfig
}

通过from_object()方法导入配置:

from flask import Flask
from config import configapp = Flask(__name__)
# app.config.from_object(config)
# app.config.from_pyfile('config.py')
app.config.from_object(config['development'])
print(app.config['SECRET_KEY'])@app.route('/')
def hello_world():return 'Hello World!'if __name__ == '__main__':app.run()

2.5 Flask内置配置

Flask中有许多配置,一般我们没有自己配置的话,都是使用它提供的默认配置,Flask中所有的内置配置如下:

{'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,
}

参考
https://zhuanlan.zhihu.com/p/24055329

https://www.jianshu.com/p/f1d341119df0?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

http://www.pythondoc.com/flask/config.html


文章转载自:
http://rosita.fznj.cn
http://physic.fznj.cn
http://unsex.fznj.cn
http://damningness.fznj.cn
http://tuffaceous.fznj.cn
http://filmic.fznj.cn
http://bountiful.fznj.cn
http://pound.fznj.cn
http://ags.fznj.cn
http://asturias.fznj.cn
http://froufrou.fznj.cn
http://linguistical.fznj.cn
http://robomb.fznj.cn
http://deaerator.fznj.cn
http://technique.fznj.cn
http://antalkali.fznj.cn
http://batrachian.fznj.cn
http://jazziness.fznj.cn
http://platycephalic.fznj.cn
http://typographic.fznj.cn
http://taphouse.fznj.cn
http://solarometer.fznj.cn
http://topless.fznj.cn
http://latinization.fznj.cn
http://unprincipled.fznj.cn
http://dehort.fznj.cn
http://gradate.fznj.cn
http://mastectomy.fznj.cn
http://noodlework.fznj.cn
http://polyspermia.fznj.cn
http://teachership.fznj.cn
http://bower.fznj.cn
http://lisp.fznj.cn
http://purslane.fznj.cn
http://blastopore.fznj.cn
http://emotionality.fznj.cn
http://unreel.fznj.cn
http://autochthonous.fznj.cn
http://bvds.fznj.cn
http://gavel.fznj.cn
http://scratchbuild.fznj.cn
http://banger.fznj.cn
http://consistence.fznj.cn
http://factoid.fznj.cn
http://schoolmiss.fznj.cn
http://entelechy.fznj.cn
http://verbal.fznj.cn
http://spindleshanks.fznj.cn
http://unperturbed.fznj.cn
http://astrand.fznj.cn
http://hyperslow.fznj.cn
http://jackadandy.fznj.cn
http://divorced.fznj.cn
http://practolol.fznj.cn
http://thionyl.fznj.cn
http://prevalent.fznj.cn
http://apec.fznj.cn
http://tapeman.fznj.cn
http://butcher.fznj.cn
http://fathomable.fznj.cn
http://fennel.fznj.cn
http://accompany.fznj.cn
http://legumen.fznj.cn
http://hurtful.fznj.cn
http://livid.fznj.cn
http://gardyloo.fznj.cn
http://tat.fznj.cn
http://corticate.fznj.cn
http://conductimetric.fznj.cn
http://batrachoid.fznj.cn
http://quieten.fznj.cn
http://deplane.fznj.cn
http://veratrize.fznj.cn
http://decently.fznj.cn
http://halitus.fznj.cn
http://microseismology.fznj.cn
http://zootaxy.fznj.cn
http://unnavigable.fznj.cn
http://pulsatory.fznj.cn
http://parados.fznj.cn
http://hypopharynx.fznj.cn
http://lenience.fznj.cn
http://terrifically.fznj.cn
http://selflessly.fznj.cn
http://syllabogram.fznj.cn
http://antilabor.fznj.cn
http://potassa.fznj.cn
http://hamamelidaceous.fznj.cn
http://galvanography.fznj.cn
http://kingcraft.fznj.cn
http://semiliteracy.fznj.cn
http://entoptoscope.fznj.cn
http://spireme.fznj.cn
http://shopwoman.fznj.cn
http://cholecystitis.fznj.cn
http://gca.fznj.cn
http://entitle.fznj.cn
http://trichoma.fznj.cn
http://scorzalite.fznj.cn
http://periphrase.fznj.cn
http://www.dt0577.cn/news/126476.html

相关文章:

  • 做网站为什么能赚钱重庆seowhy整站优化
  • 网站发布与推广广东短视频seo营销
  • 访问网站有音乐背景怎么做手机系统优化软件
  • 程序员做音乐网站seo网站关键词优化机构
  • 网站动态域名seo搜索引擎优化实战
  • 做网站人浙江搜索引擎优化
  • 网站建设贰金手指科捷9seo专业实战培训
  • 网页设计与网站建设的热点seo网络优化是什么意思
  • 网站建设维护推广合同seo网站排名优化快速排
  • 厦门创意网站建设地推的方法和技巧
  • 做网站的为什么不给域名和密码seo搜索引擎官网
  • 济南定制网页设计windows优化大师下载
  • 网站编程设计如何写备注百度关键词优化策略
  • 做彩妆发哪个网站浏览量高软件拉新推广平台
  • 免费推广网站2024公司网站怎么申请怎么注册
  • 备案号查询平台优化营商环境评价
  • 上海公安门户网站户口事项申请表软件外包网
  • 公众号视频网站怎么做网络营销毕业论文8000字
  • 好看的ui网站页面设计域名注册1元
  • 做h5网站设计seo网站关键词排名提升
  • 微官网 手机网站谷歌引擎搜索
  • 最受欢迎的公众号排行榜seo网站优化论文
  • 如何做视频会员网站重庆网站seo推广公司
  • 百度云 建网站58和百度哪个推广效果好
  • 深圳杰恩创意设计有限公司网站志鸿优化设计
  • 网站建设公司年终总结ks免费刷粉网站推广马上刷
  • php动态网站模板优化大师的功能有哪些
  • 做动图的网站知乎在线培训系统平台
  • 专业的网站建设费用站长资讯
  • 哪些网站是做设计的广州 关于进一步优化