首页 > 其他 > 详细

Flask

时间:2019-10-13 22:49:05      阅读:90      评论:0      收藏:0      [点我收藏+]

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))   #类.字符串

  

 

  

 

 

  

Flask

原文:https://www.cnblogs.com/zenghui-python/p/11668634.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!