所谓工厂函数,其实就是把函数都整合到一起,然后一个个函数变成打工仔,在构建的这个工厂函数里面打工,setting文件同上一篇文章
from flask import Flask
class DefaultConfig(object):
SECRET_KEY='asdfg fake'
#定义flask对象的工厂函数概念,把函数都整理到一起,下次调用直接调用这个大函数即可
def create_flask_app(config):
app=Flask(__name__,static_url_path='/s',static_folder='static_fires') #Flask(模块名字符串类型)
app.config.from_object(DefaultConfig)
app.config.from_envvar('PROJECT_SETTING',silent=True)
return app
app=create_flask_app(DefaultConfig)
#定义视图
@app.route('/')
def index():
#为了验证是否完成,读取下配置信息验证
#不明确用get,此处明确有一个SECRET_KEY的,直接方括号
#再打印出来看看是否有信息,用print
print(app.config['SECRET_KEY'])
return'hello world'
if __name__ == '__main__':
app.run()
Debug开启程序:
from flask import Flask
class DefaultConfig(object):
SECRET_KEY='asdfg fake'
#设置Debug的调试程序
class DevelogmentConfig(DefaultConfig):
DEBUG=True
#定义flask对象的工厂函数概念,把函数都整理到一起,下次调用直接调用这个大函数即可
def create_flask_app(config):
app=Flask(__name__,static_url_path='/s',static_folder='static_fires') #Flask(模块名字符串类型)
app.config.from_object(DevelogmentConfig)
app.config.from_envvar('PROJECT_SETTING',silent=True)
return app
app=create_flask_app(DevelogmentConfig)
#定义视图
@app.route('/')
def index():
#为了验证是否完成,读取下配置信息验证
#不明确用get,此处明确有一个SECRET_KEY的,直接方括号
#再打印出来看看是否有信息,用print
print(app.config['SECRET_KEY'])
return'hello world'
if __name__ == '__main__':
app.run()
运行成功的时候,底部会显示Debug mode: on,如图:
* Serving Flask app 'helloworld_production'
* Debug mode: on
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on http://127.0.0.1:5000
Press CTRL+C to quit
* Restarting with stat
* Debugger is active!
* Debugger PIN: 135-405-223
ps:
三种错误分析:
1.“DEBUG”写成了“Debug”,导致Debug mode: off
class DevelogmentConfig(DefaultConfig):
Debug=True
2.“DevelopmentConfig”写成了"DefaultConfig",导致Debug mode: off
def create_flask_app(config):
app.config.from_object(DevelogmentConfig)
return app
3.“DevelopmentConfig”写成了"DefaultConfig",导致Debug mode: off
app=create_flask_app(DevelogmentConfig)
第一个问题是代码记忆混淆导致
第二个问题是共有两个class,调试应该被DevelopmentConfig这个class传入,而不是DefaultConfig
第三个问题是应该是使用调试程序,而不是上一级
总结下来,由于DefaultConfig与DevelopmentConfig是套用关系,要注意选择哪一级去使用!!!
class DefaultConfig(object):
SECRET_KEY='asdfg fake'
class DevelogmentConfig(DefaultConfig):
DEBUG=True