首页 > 其他分享 >Flask初步认识

Flask初步认识

时间:2022-10-30 04:55:06浏览次数:45  
标签:__ 配置文件 Flask app 配置 初步 认识 config

1.Flask基本认识

Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展包(数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL。其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2。这两个也是 Flask 框架的核心。

核心:werkzeug和Jinja2

  • werkzeug是python的模块,封装了请求、响应、编码、数据认证等内容;
  • Jinja2是模板引擎;
  • Flask诞生2010年、简洁、轻量、扩展性强

2.框架的特点、异同、应用场景?

  • Django:集成度高、web项目需要的基本功能,都封装在框架中,ORM、CSRF、后台管理等;
  • Flask:简洁、轻量、扩展性强;

3.Flask 环境搭建

3.1使用虚拟环境创建虚拟环境,mkvirtualenv自行百度(这里略过)

3.2使用pycharm创建虚拟环境(推荐)



4.创建Flask简单应用

# 导入Flask类
from flask import Flask

"""
   Flask类接收一个参数__name__
    import_name
    Flask程序所在的包(模块),传 __name__ 就可以
    其可以决定 Flask 在访问静态文件时查找的路径
    static_url_path
    静态文件访问路径,可以不传,默认为:/ + static_folder
    static_folder
    静态文件存储的文件夹,可以不传,默认为 static
    template_folder
    模板文件存储的文件夹,可以不传,默认为 templates
"""
app = Flask(__name__)

# 装饰器的作用是将路由映射到视图函数index
@app.route('/')  
def index():
    return 'Hello World'
#app.add_url_rule("/",view_func=index)  # 此方法和@app.route('/')类似,就是映射url与相应视图函数
# Flask应用程序实例的run方法启动WEB服务器
if __name__ == '__main__':
    app.run()

5.应用程序配置参数设置(集中管理项目所有配置信息)

5.1配置文件

  • Django将所有配置信息都放到了settings.py文件中。

  • Flask将配置信息保存到了app.config属性中,该属性可以按照字典类型进行操作。

5.2flask获取配置信息

  • app.config.get(name)
  • app.config[name]

5.2Flask配置设置(主要有三种)

  • 加载配置对象:一般存储业务相关的配置信息,比如数据库配置、连接信息、各种初始化的配置信息等;

    • 优点:封装性好,可复用性强
    • 缺点:不安全;
  • 加载配置文件:

    • 复用性相对不好,不是很安全;
  • 加载环境变量:一般存储敏感信息,不适合对外公开的信息,比如密钥、签名等;

    • 使用相对复杂,更安全;
  • 总结:项目中使用第一种和第三种;

  • 不同的配置方式中,如果key是相同的,加载到的配置信息是哪个?最近调用的那个,记着每次调用都会把新调用中的配置信息覆盖以前的

  • 5.2.1从配置对象中加载app.config.from_object(配置对象)

    class DefaultConfig(object):
        """默认配置"""
        DEBUG_BOOLE=True
    
    app = Flask(__name__)
    
    app.config.from_object(DefaultConfig)
    
    @app.route("/")
    def index():
        print(app.config['DEBUG_BOOLE'])
        return "hello world"
    
  • 5.2.2从配置文件中加载app.config.from_pyfile(配置文件)

    #1.新建一个配置文件setting.py(或者setting.ini)里面写入DEBUG_BOOLE=True
    #2。在flask程序文件中
    app = Flask(__name__)
    
    app.config.from_pyfile('/xxxx/xx/xx/setting.py')  # 里面写你上面配置文件的路径,如果在当前文件夹里创建的,就直接写setting.py,如果不是就写setting文件的路径
    
    @app.route("/")
    def index():
        print(app.config['DEBUG_BOOLE'])
        return "hello world"
    
  • 5.2.3从环境变量中加载app.config.from_envvar(variable_name: str, silent: bool = False) Flask使用环境变量加载配置的本质是通过环境变量值找到配置文件,再读取配置文件的信息
    variable_name表示环境变量(一般是指在操作系统中用来指定操作系统运行环境的一些参数。通俗的讲:环境变量就是我们设置在操作系统中,由操作系统代为保存的变量值)
    silent表示系统环境变量中没有设置相应值时是否抛出异常(False 表示不安静的处理,没有值时报错通知,默认为False,True 表示安静的处理,即时没有值也让Flask正常的运行下去。)

  • 5.2.3-1.Linux系统中设置加入环境变量

    在Linux系统中设置和读取环境变量的方式如下:
    #设置:export 变量名=变量值     export ITNAME=python
    #读取:echo $变量名            echo $ITNAME
    Flask使用环境变量加载配置的本质是通过环境变量值找到配置文件,再读取配置文件的信息,其使用方式为
    app.config.from_envvar('环境变量名')环境变量的值为配置文件的绝对路径
    先在终端中执行如下命令:export PROJECT_SETTING='~/setting.py'
    再运行如下代码
    
    app = Flask(__name__)
    
    app.config.from_envvar('PROJECT_SETTING', silent=True)
    
    @app.route("/")
    def index():
        print(app.config['ITNAME'])
        return "hello world"
    
  • 5.2.3-2Pycharm运行时设置环境变量的方式

    app = Flask(__name__)
    
    app.config.from_envvar('SET')
    
    @app.route("/")
    def index():
        print(app.config['DEBUGBOOLE'])  # DEBUGBOOLE是SET环境变量对应的配置文件里面的信息
        return "hello world"
    
  • 5.2.3-3项目中常用的方式
    使用工厂模式创建Flask app,并结合使用配置对象与环境变量加载配置
    使用配置对象加载默认配置
    使用环境变量加载不想出现在代码中的敏感配置信息

    # 工厂模式:
    # 1.定义工厂函数,封装创建程序实例的代码
    # 2.定义函数的参数,可以根据参数的不同,生成不同的app
    
    # 从环境变量中加载配置信息,一般是不适合对外公开的信息;
    def create_flask_app(config,enable_config_file=False):
        """
        创建Flask应用
        config:配置信息对象
        enable_config_file:是否允许运行环境中的配置文件覆盖已加载的配置信息
        :return: Flask应用
        """
        app = Flask(__name__)
        app.config.from_object(config)
        if enable_config_file:
            from common.utils import constants
            app.config.from_envvar("SET",silent=True)
        return app
    
    # 从配置对象中加载配置信息,一般是和业务相关的信息,比如数据库的连接信息等
    def create_app(config,enable_config_file=False):
        """
        创建应用
        config:配置对象信息
        enable_config_file:是否允许运行环境中的配置文件覆盖已加载的配置信息
        :return: app 应用
        """
        app = create_flask_app(config,enable_config_file)
        return app
    
    class DefaultConfig(object):
           """配置对象"""
           DEBUG_BOOLE=True
    # 调用工厂函数,传入配置参数,获取程序实例对象
    #app = create_app(DefaultConfig)
    app = create_app(DefaultConfig,enable_config_file=True)
    @app.route("/")
    def index():
        print(app.config['DEBUG_BOOLE'])
        return "hello world"

标签:__,配置文件,Flask,app,配置,初步,认识,config
From: https://www.cnblogs.com/lwcbk/p/16840410.html

相关文章

  • flask之wtforms
    简介WTForms是一个支持多个web框架的form组件,主要用于对用户请求数据进行验证。安装:pip3installwtforms==2.3.3用户登录注册示例1.用户登录当用户登录时候,需要......
  • golang学习之路2-基础认识(上)
    @目录前言一、变量定义1.变量2.数据类型二、自增自减三、指针1.使用指针&及*2.空指针3.指针完整代码四、不支持语法1.自增自减--i及++i2.不支持内存地址(指针)加减3.......
  • react实战笔记88:初步完成购物车条x
    购物车结构......
  • 重构 Flask 服务端项目对于 SQL 的配置使用和延迟的请求回调巧妙设计运用
    一.Flask-SQLAlchemySQLAlchemy的声明扩展是使用SQLAlchemy的最新方法,可以像Django一样在一个位置定义表和模型,然后在任何地方使用。fromsqlalchemyimportcreate_engi......
  • VNC配置1-全面认识--亲测OK
    VNC配置1---亲测OKTigerVNCTightVNC的分支,取代原TightVNC,虚拟会话使用Xvnc,物理会话使用x0vncserver。Xvnc是新创建一个虚拟桌面,而x0vncserver可以共享本地的桌面。......
  • flask之flask_session
    flask-session-Flask中session处理机制(内置:将session保存在加密cookie中实现)-请求刚到来:获取随机字符串,存在则去"数据库"中获取原来的个人数据,否则创建一......
  • 对静态代理模式的初步理解
    packagedemo1;publicclassStaticProxy{publicstaticvoidmain(String[]args){newThread(()->System.out.println("我爱你")).start();......
  • 转帖-我对测试工作的一些认识
    从大专毕业后,慢慢过去了三年,不知道自己要干什么,要到哪里去,没有目标的活着。但是现在也在慢慢填充眼界和开阔自己的视野,看看更多人的方法,学习思路,以及对待人生的见解。争取......
  • flask的自定义bootstrap模板
    由于​​flask-bootstrap​​​的​​base.html​​​模板提供功能有限(文件位置:​​/site-packages/flask_bootstrap/templates/bootstrap/base.html​​),比如我想在body中最......
  • 一、认识Vue-API 风格
    Vue的组件可以按两种不同的风格书写:选项式API 和组合式API。(一)、选项式API(OptionsAPI)使用选项式API,我们可以用包含多个选项的对象来描述组件的逻辑,例如 data......