Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求进行预处理,然后触发Flask框架,开发人员基于Flask框架提供的功能对请求进行相应的处理,并返回给用户,如果要返回给用户复杂的内容时,需要借助jinja2模板来实现对模板的处理,即:将模板和数据进行渲染,将渲染后的字符串返回给用户浏览器。
flask 是轻量级的,并且可扩展性强,可定制性强 的框架。适用于开发小型的网站。开发大型的网站也行,因为flask提供了很多第三方的组件,我们把flask与第三方的组件结合起来,也可以搭建一个与Django类似的,集成了很多功能的一个框架。
from flask import Flask
app = Flask(__name__)
 
@app.route(‘/index‘)
def index():
    return ‘index‘
 
if __name__ == ‘__main__‘:
    app.run()
二、配置文件
flask中的配置文件是一个flask.config.Config对象(继承字典),默认配置为:
    {
        ‘DEBUG‘:                                get_debug_flag(default=False),  是否开启Debug模式
        ‘TESTING‘:                              False,                          是否开启测试模式
        ‘PROPAGATE_EXCEPTIONS‘:                 None,                          
        ‘PRESERVE_CONTEXT_ON_EXCEPTION‘:        None,
        ‘SECRET_KEY‘:                           None,
        ‘PERMANENT_SESSION_LIFETIME‘:           timedelta(days=31),
        ‘USE_X_SENDFILE‘:                       False,
        ‘LOGGER_NAME‘:                          None,
        ‘LOGGER_HANDLER_POLICY‘:               ‘always‘,
        ‘SERVER_NAME‘:                          None,
        ‘APPLICATION_ROOT‘:                     None,
        ‘SESSION_COOKIE_NAME‘:                  ‘session‘,
        ‘SESSION_COOKIE_DOMAIN‘:                None,
        ‘SESSION_COOKIE_PATH‘:                  None,
        ‘SESSION_COOKIE_HTTPONLY‘:              True,
        ‘SESSION_COOKIE_SECURE‘:                False,
        ‘SESSION_REFRESH_EACH_REQUEST‘:         True,
        ‘MAX_CONTENT_LENGTH‘:                   None,
        ‘SEND_FILE_MAX_AGE_DEFAULT‘:            timedelta(hours=12),
        ‘TRAP_BAD_REQUEST_ERRORS‘:              False,
        ‘TRAP_HTTP_EXCEPTIONS‘:                 False,
        ‘EXPLAIN_TEMPLATE_LOADING‘:             False,
        ‘PREFERRED_URL_SCHEME‘:                 ‘http‘,
        ‘JSON_AS_ASCII‘:                        True,
        ‘JSON_SORT_KEYS‘:                       True,
        ‘JSONIFY_PRETTYPRINT_REGULAR‘:          True,
        ‘JSONIFY_MIMETYPE‘:                     ‘application/json‘,
        ‘TEMPLATES_AUTO_RELOAD‘:                None,
    }
 
修改配置文件的方式:
方式一:
    app.config[‘DEBUG‘] = True
 
    PS: 由于Config对象本质上是字典,所以还可以使用app.config.update(...)
方式二:
    app.config.from_object("python类或类的路径")
# 按照不同的情况 ;修改配置 app.config.from_object(‘settings.DevelopmentConfig‘) #settings.py文件 #基础的配置类 class Config(object): DEBUG = False TESTING = False DATABASE_URI = ‘sqlite://:memory:‘ #用于上线的配置类 class ProductionConfig(Config): DATABASE_URI = ‘mysql://user@localhost/foo‘ #用于开发的配置类 class DevelopmentConfig(Config): DEBUG = True
PS: settings.py文件默认路径要放在程序root_path目录,如果instance_relative_config为True,则就是instance_path目录
写一个配置文件的字符串怎么找到配置信息的原理
# ‘settings.DevelopmentConfig‘通过切割,在importlib 加载模块,然后反射得到这个类的对象。dir(obj) 拿到这个类下面的所有属性和方法 # 再判断是大写的,这样就可以拿到这个配置下面的配置信息了。
原理的代码
import importlib path = "settings.Foo" p,c = path.rsplit(‘.‘,maxsplit=1) m = importlib.import_module(p) cls = getattr(m,c) # 如果找到这个类? #dir(cls)找到这个类下面的所有属性的字符串,不包含__init__下面的对象属性 for key in dir(cls): if key.isupper(): print(key,getattr(cls,key)) #类.字符串
原文:https://www.cnblogs.com/zenghui-python/p/11668634.html